Измерение времени выполнения функции
От: Genie  
Дата: 07.11.01 10:31
Оценка:
Здраствуйте,
Как можно измерить время выполнения функции (как можно точнее напр. в мкс),
и насколько в этом случае можно "доверять" clock()?
Заранее спасибо.
Re: Измерение времени выполнения функции
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 07.11.01 11:30
Оценка:
Здравствуйте Genie, Вы писали:

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

Прогнать ее 1000 раз

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

по-моему, до миллисекунды
- А Вы что курите?
— Минздрав предупреждает
Re: Измерение времени выполнения функции
От: Igor Soukhov  
Дата: 07.11.01 11:35
Оценка:
Здравствуйте Genie, Вы писали:

G>Здраствуйте,

G>Как можно измерить время выполнения функции (как можно точнее напр. в мкс),
G>и насколько в этом случае можно "доверять" clock()?
если для отладлочных цедей — то можно пользовать профайлеры ...
Numega TrueTime & VTune от Intela

G>Заранее спасибо.
* thriving in a production environment *
Re[2]: Измерение времени выполнения функции
От: Genie  
Дата: 07.11.01 12:08
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:

РГ>Здравствуйте Genie, Вы писали:


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

РГ>Прогнать ее 1000 раз

Это конечно так, а для большей точности и 1000000 раз можно, но ведь в этом
случае нарушается чистота замера (будут "навденные помехи" на вызов функции и на собственно сам цикл)

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

РГ>по-моему, до миллисекунды

Это потому что CLOCKS_PER_SEC=1000? А что такое clocks и связано ли его значение как-то, ну скажем, с частотой процессора?
Re[2]: Измерение времени выполнения функции
От: Genie  
Дата: 07.11.01 12:16
Оценка:
Здравствуйте Igor Soukhov, Вы писали:

IS>Здравствуйте Genie, Вы писали:


G>>Здраствуйте,

G>>Как можно измерить время выполнения функции (как можно точнее напр. в мкс),
G>>и насколько в этом случае можно "доверять" clock()?
IS>если для отладлочных цедей — то можно пользовать профайлеры ...
IS>Numega TrueTime & VTune от Intela

Нельзя ли немного по-подробнее про это (я просто о таком не слышал). Может ссылочку, где об этом почитать можно... А какой у них вообще принцип действия?

Заранее спасибо.
Re[3]: Измерение времени выполнения функции
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 07.11.01 12:28
Оценка:
Здравствуйте Genie, Вы писали:

G>Здравствуйте Ростислав Глухов, Вы писали:


РГ>>Здравствуйте Genie, Вы писали:


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

РГ>>Прогнать ее 1000 раз

G>Это конечно так, а для большей точности и 1000000 раз можно, но ведь в этом

G>случае нарушается чистота замера (будут "навденные помехи" на вызов функции и на собственно сам цикл)
нарушается, действительно, если для отладочных целей, то может использовать,как писАл Igor Soukhov
сторонние программы?

мне напр. нравится Rational Quantify

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

РГ>>по-моему, до миллисекунды

G>Это потому что CLOCKS_PER_SEC=1000? А что такое clocks и связано ли его значение как-то, ну скажем, с частотой процессора?

Да, и clock() возвращает long. Константа не связана, точность зависит ли от частоты не знаю.
- А Вы что курите?
— Минздрав предупреждает
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 получится количество тактов на функцию. Понятно, что этот код страшно аппаратно зависим. Вам надо как-то узнать частоту процессора, чтобы посчитать количество мкс. Кроме того, в многозадачной среде часть времени, в которое выполняется ваша функция, могут занять другие задачи.

В общем, неудобно. Зато точно (с точностью до такта).
Тхе Енд
Re[4]: Измерение времени выполнения функции
От: Genie  
Дата: 07.11.01 12:53
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:


G>>Это конечно так, а для большей точности и 1000000 раз можно, но ведь в этом

G>>случае нарушается чистота замера (будут "навденные помехи" на вызов функции и на собственно сам цикл)
РГ>нарушается, действительно, если для отладочных целей, то может использовать,как писАл Igor Soukhov
РГ>сторонние программы?
РГ>мне напр. нравится Rational Quantify

Если это дейтсвительно единственный способ, то тот же вопрос, что Igorю Soukhovу,
просветите пожалуйста где их взять, как ими пользоваться, каков их принцип действия и т.п. Тот же Rational Quantify — где его можно взять?

Заранее спасибо.
Re: Измерение времени выполнения функции
От: Eugene  
Дата: 07.11.01 16:11
Оценка:
Здравствуйте Genie, Вы писали:

G>Здраствуйте,

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

Посмотри QueryPerformanceCounter(...), QueryPerformanceFrequency(...)
Don't trouble trouble until trouble troubles you
Re[2]: Измерение времени выполнения функции
От: IT Россия linq2db.com
Дата: 07.11.01 16:17
Оценка:
Здравствуйте Igor Soukhov, Вы писали:

IS>если для отладлочных цедей — то можно пользовать профайлеры ...

IS>Numega TrueTime & VTune от Intela

IS прав, TrueTime рулит. Не знаю как VTune, но TrueTime — очень неплохой и удобный прафайлер.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Измерение времени выполнения функции
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 08.11.01 06:38
Оценка:
Здравствуйте Genie, Вы писали:

G>просветите пожалуйста где их взять, как ими пользоваться, каков их принцип действия и т.п. Тот же Rational Quantify — где его можно взять?


www.rational.com, www.interface.ru
- А Вы что курите?
— Минздрав предупреждает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.