Re: Измерение времени выполнения функции
От: Устрица Украина  
Дата: 07.11.01 12:46
Оценка:
Здравствуйте Genie, Вы писали:

G>Как можно измерить время выполнения функции (как можно точнее напр. в мкс),

G>и насколько в этом случае можно "доверять" clock()?

Насчёт степени доверия clock() — не знаю, но можно измерить время выполнения функции с точностью до такта, используя ассемблерные вставки (смотрим TSC командой RDTSC и получаем, сколько тактов оттакало, пока функция работала).

Пример (компилил bcc32 из BCB5):

//For compilation: bcc32 thisFile.cpp (Pentium only)
#include <iostream>

void myFunc()
{
...
}

int main()
{
__int64 n1, n2;

asm {
db 0Fh,31h //rdtsc
mov [dword ptr n1], eax
mov [dword ptr n1 + 4], edx
}

myFunc();

asm {
db 0Fh,31h //rdtsc
mov [dword ptr n2], eax
mov [dword ptr n2 + 4], edx
}

__int64 ticks = n2 — n1;

return 0;
}


В ticks получится количество тактов на функцию. Понятно, что этот код страшно аппаратно зависим. Вам надо как-то узнать частоту процессора, чтобы посчитать количество мкс. Кроме того, в многозадачной среде часть времени, в которое выполняется ваша функция, могут занять другие задачи.

В общем, неудобно. Зато точно (с точностью до такта).
Тхе Енд
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.