
#include <stdio.h>
#include <windows.h>

#define LOOPS 10000000

int main(void)
{
	LARGE_INTEGER start, end, frequency;
	FILETIME ft;
	SYSTEMTIME	system_time;
	
	int x;
	if (!QueryPerformanceFrequency(&frequency))
		exit(-1); 
	
	QueryPerformanceCounter(&start);
	
	for (x = 0; x < LOOPS; x++)
	{
		GetSystemTimePreciseAsFileTime(&ft);
	}
	QueryPerformanceCounter(&end);
	
	printf("GetSystemTimePreciseAsFileTime() in %f seconds\n", (end.QuadPart - start.QuadPart) / (double)frequency.QuadPart);
	
	QueryPerformanceCounter(&start);
	
	for (x = 0; x < LOOPS; x++)
	{
		GetSystemTimeAsFileTime(&ft);
	}
	QueryPerformanceCounter(&end);
	
	printf("GetSystemTimeAsFileTime() in %f seconds\n", (end.QuadPart - start.QuadPart) / (double)frequency.QuadPart);
	
	QueryPerformanceCounter(&start);

	for (x = 0; x < LOOPS; x++)
	{
		GetSystemTime(&system_time);
		SystemTimeToFileTime(&system_time, &ft);
	}
	QueryPerformanceCounter(&end);
	
	printf("Current Method in %f seconds\n", (end.QuadPart - start.QuadPart) / (double)frequency.QuadPart);
	
	return 0;
}