Skip to content

Instantly share code, notes, and snippets.

@hirosof
Created June 28, 2017 22:34
Show Gist options
  • Save hirosof/b3000392732d1f9e1587268d3e0307d1 to your computer and use it in GitHub Desktop.
Save hirosof/b3000392732d1f9e1587268d3e0307d1 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <Windows.h>
#include <vector>
#pragma comment(lib,"winmm.lib")
#define LOOPS 1000000
void NormalValueTest ( void );
int main ( void ) {
std::vector<size_t> a;
for ( size_t i = 0; i < 10000; i++ ) {
a.push_back ( i );
}
DWORD ms = 5000;
int fastFlag = 0;
for ( int i = 0; i < 5; i++ ) {
printf ( "[%d回目]\n" , i +1);
auto it = a.begin ( );
long long before , after ;
DWORD st;
DWORD et;
before = 0;
after = 0;
st = timeGetTime ( );
do {
++before;
if ( it == a.end ( ) )it = a.begin ( );
++it;
et = timeGetTime ( );
} while ( ( et - st ) < ms );
printf ( "前置インクリメント:%I64u\n" , before );
it = a.begin ( );
st = timeGetTime ( );
do {
after++;
if ( it == a.end ( ) )it = a.begin ( );
it++;
et = timeGetTime ( );
} while ( ( et - st ) < ms );
printf ( "後置インクリメント:%I64u\n\n" , after );
if ( before > after ) fastFlag--;
else if ( before < after ) fastFlag++;
}
printf ( "fastflag = %d\n" , fastFlag );
return 0;
}
void NormalValueTest ( void ) {
long long before = 0 , after = 0;
DWORD st;
DWORD et;
st = timeGetTime ( );
do {
++before;
et = timeGetTime ( );
} while ( ( et - st ) < 5000 );
printf ( "前置インクリメント:%I64u\n" , before );
st = timeGetTime ( );
do {
after++;
et = timeGetTime ( );
} while ( ( et - st ) < 5000 );
printf ( "後置インクリメント:%I64u\n" , after );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment