come funziona il QueryPerformanceCounter?
codice:
#include <iostream>
#include <windows.h>

using namespace std;

int main(void){
	LARGE_INTEGER freq, t1, t2, overhead;
	if (QueryPerformanceFrequency(&freq))
	{ 
		QueryPerformanceCounter(&t1);
		QueryPerformanceCounter(&t2);	
		overhead.QuadPart = t2.QuadPart - t1.QuadPart;
		QueryPerformanceCounter(&t1);
		  for (int i = 0; i < 10; ++i)
		  {
		    // Codice loop
			Sleep(100); // "Rallenta" l'esecuzione
			cout << "Ciao Mondo!" << endl;
		  }
		QueryPerformanceCounter(&t2);
		cout << "Tempo impiegato: " << (double) (t2.QuadPart - t1.QuadPart - overhead.QuadPart) / freq.QuadPart << endl;
	}
	else cout << "Impossibile ottenere la frequenza" << endl;
	return 0;
}
o più semplicemente:

codice:
#include <iostream>
#include <windows.h>

using namespace std;

int main(void){
	int t1, t2;
	t1 = GetTickCount();
		  for (int i = 0; i < 10; ++i)
		  {
		    // Codice loop
			Sleep(100); // "Rallenta" l'esecuzione
			cout << "Ciao Mondo!" << endl;
		  }
	t2 = GetTickCount();
           cout << "Tempo impiegato (ms): " << t2-t1 << endl;
	return 0;
}