Cześć, widziałem na forum i w sieci różne metody pomiaru czasu działania algorytmu, ja jednak znalazłem coś takiego:
#include <iostream>
#include <windows.h>
LARGE_INTEGER startTimer()
{
LARGE_INTEGER start;
DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
QueryPerformanceCounter(&start);
SetThreadAffinityMask(GetCurrentThread(), oldmask);
return start;
}
LARGE_INTEGER endTimer()
{
LARGE_INTEGER stop;
DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
QueryPerformanceCounter(&stop);
SetThreadAffinityMask(GetCurrentThread(), oldmask);
return stop;
}
int main()
{
LARGE_INTEGER performanceCountStart, performanceCountEnd;
performanceCountStart = startTimer(); //zapamiętujemy czas początkowy
int a; std::cin >> a;
performanceCountEnd =endTimer(); //zapamiętujemy koniec czasu
double tm = performanceCountEnd.QuadPart -performanceCountStart.QuadPart;
std::cout << "\n" << "Time:" << tm << "\n";
system("PAUSE");
}
Mierzymy czasy wykonania w sumie tylko linijki
int a; std::cin >> a;
(tak dla testu). Jednak wyświetlane wyniki pomiaru ze zmiennej tm są w jakby notacji naukowej, nie potrafię tego rozszyfrować. Czy ktoś wie, co to za czas jest w ogóle zwracany? W jakich to jednostkach, czy w jakichś taktach zegara, czy jakichś jednostkach czasowych? Algorytm wydaje się być fajny, jednak natknąłem się na niego w sieci i nie mogę rozszyfrować do końca jak on działa. Swoje pomiary czasu chciałbym mieć w ms, jeśli będzie to sensowna jednostka.
Dzięki za pomoc :).