время работы некоторого участка программы

perko

как правильнее всего подсчитать процессорное время работы некоторого участка
кода , скажем в с++ ?

freezer

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

Dasar

Платформа какая?
Под Win2k есть HiPerformanceCounter - точность порядка микросекунд.

rosali

Процессор какой?
Под x86 есть
 asm {  rdtsc; }  
вообще такты меряет. Очень интересно, видно как после первых проходов цикла данные оседают в кеше, или как кеш инструкций заполняется.

bleyman

Для этой цели, наверное, подходит, но вообще в качестве высокоточного таймера рекомендуется использовать всё-таки виндовый хай-перформанс каунтер, или медиа-таймер. Потому что на мобильных процессорах тактовая частота может смешно плавать.

rosali

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

perko

а есть функция которая возвращает именно, что-то вроде процессорного времени ?
если за время работы моего кода , процессор отвлекался ) как точно измерить ?

bleyman

А ты ставиь процессу приоритет realtime, тогда не будет отвлекаться.
Только не забывай часто вызывать Sleep(1) - иначе клавиатура работать не будет и всё такое.
Оставить комментарий
Имя или ник:
Комментарий: