Есть некоторая функция myfunc--например, void myfunc(); .
Как узнать время её выполнения?
Какие функции следует вызвать перед функцией myfunc и какую--после вызова функции myfunc, чтобы узнать текущее время на этих двух точках выполнения программы? Как получить разницу между этими двумя временами?
1613 г. = 2024 г.
Re: Как узнать время выполнения какой-нибудь функции?
Здравствуйте, RussianFellow, Вы писали:
RF>Есть некоторая функция myfunc--например, void myfunc(); . RF>Как узнать время её выполнения? RF>Какие функции следует вызвать перед функцией myfunc и какую--после вызова функции myfunc, чтобы узнать текущее время на этих двух точках выполнения программы? Как получить разницу между этими двумя временами?
GetTickCount, или читать про performance counters для Windowsю
Re: Как узнать время выполнения какой-нибудь функции?
Здравствуйте, RussianFellow, Вы писали:
RF>Есть некоторая функция myfunc--например, void myfunc(); . RF>Как узнать время её выполнения?
LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds;
LARGE_INTEGER Frequency;
QueryPerformanceFrequency(&Frequency);
QueryPerformanceCounter(&StartingTime);
// Activity to be timedvoid myfunc();
QueryPerformanceCounter(&EndingTime);
ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart;
//
// We now have the elapsed number of ticks, along with the
// number of ticks-per-second. We use these values
// to convert to the number of elapsed microseconds.
// To guard against loss-of-precision, we convert
// to microseconds *before* dividing by ticks-per-second.
//
ElapsedMicroseconds.QuadPart *= 1000000;
ElapsedMicroseconds.QuadPart /= Frequency.QuadPart;
Время выполнения myfunc() в микросекундах находится в ElapsedMicroseconds.QuadPart
Re[2]: Как узнать время выполнения какой-нибудь функции?
Здравствуйте, RussianFellow, Вы писали:
RF>Есть некоторая функция myfunc--например, void myfunc(); . RF>Как узнать время её выполнения?
Позвать ее в цикле миллион раз, узнать время до и после цикла, вычислить разницу, поделить на миллион.
RF>Какие функции следует вызвать перед функцией myfunc и какую--после вызова функции myfunc, чтобы узнать текущее время на этих двух точках выполнения программы? Как получить разницу между этими двумя временами?
Функции, которые возвращают время, сами выполняются какое-то время. Если ты собираешься померить время одиночного вызова, то погрешности из-за этого будут слишком велики. Я, естественно предполагаю, что твоя функция выполняется относительно быстро.
А так, под вендой используй QueryPerformanceCounter(). А чтобы узнать, с какой скоростью он тикает, сначала позови QueryPerformanceFrequency()
Re[3]: Как узнать время выполнения какой-нибудь функции?