Мне нужно измерить производительность моей письменной функции.Поскольку я не могу использовать C ++ 11 и мне нужны микросекунды, я использовал QueryPerformanceCounter из windows.h.
#include <Windows.h>
LARGE_INTEGER begin, end, frequency;
double timeElapsed = 0.0;
QueryPerformanceFrequency(&frequency);
for (int i = 0; i < 100; i++) {
QueryPerformanceCounter(&begin);
myFunctionToTest();
QueryPerformanceCounter(&end);
// get microsecs
timeElapsed = ((end.QuadPart - begin.QuadPart) * 1000.0 / frequency.QuadPart) * 1000;
std::cout << timeElapsed << std::endl;
appendToCsvFile(timeElapsed);
}
Результаты timeElapsed обычно составляют от 2 до 10 микросекунд, если я НЕ вызываю appendToCsvFile ().
Вызов функции appendToCsvFile (), который не делает ничего, кроме записи результата в файл, сильно влияет на результат измерения (результаты от 20 до 60 микросекунд).
Функция называется ПОСЛЕ измерения, но она имеет некоторый эффект. Есть ли причина, по которой это возможно?Существует ли какая-либо библиотека для Visual C ++ 2010, которая подходит для микросекундных измерений?