5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
1 | |
Как с точностью до микросекунд замерить время выполнения функции?16.11.2011, 12:33. Показов 30453. Ответов 89
Метки нет (Все метки)
0
|
16.11.2011, 12:33 | |
Ответы с готовыми решениями:
89
Как получить время с точностью для микросекунд? Замерить время выполнения Замерить время выполнения потока Как замерить время работы функции? |
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
16.11.2011, 12:38 | 3 |
Svinina, Смотря для чего тебе это нужно.
Если измерять вычисления то есть только один наверное способ получить такую точность....это считать тики процессора и никому не передавать управление...но загрузка проца будет хорошая..... Если обычным способом, то там как минимум погрешность будет миллисекунд 30, и то на одной и той же программе можешь получить разные значения....
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 12:54 | 4 |
Стандартными средствами - никак.
В миллисекундах - без проблем. В микро - проблематично.
0
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
16.11.2011, 12:58 [ТС] | 5 |
Deviaphan, хорошо, в миллисекундах как?
0
|
Заблокирован
|
|
16.11.2011, 12:59 | 6 |
1. Грузим комп на 100%
2. Засекаем количество тактов 3. Ждем 3 секунды (чем дольше, тем лучше) 4. Смотрим сколько тактов прошло. Делим на 3 сек. Получаем кол-во тактов за 1 сек 5. Засекаем такты 6. Гоним цикл с функцией (чем больше, тем лучше) 7. Смотрим сколько тактов прошло. Делим на количество итераций цикла. 8. Сопоставляем: сколько тактов в секунде, и сколько тактов в 1 функции. 9. Профит! /ps все расчеты будут неточными.
1
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 12:59 | 7 |
GetTickCount() до
и GetTickCount() после. Разница между вызовами - время в тысячных секунды. Погрешность плюс-минус немного миллисекунд.
0
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
16.11.2011, 13:00 [ТС] | 8 |
Bers, я так конечно же делать не буду, но все равно спасибо.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 13:00 | 9 |
Увы, но нет. Процессоры имеют приятное свойство самопроизвольно разгоняться и наоборот. Считать такты процессора можно, а вот сказать за какое время они выполнились...
0
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
16.11.2011, 13:02 [ТС] | 10 |
Deviaphan, а где она объявлена?
0
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
16.11.2011, 13:03 | 11 |
Deviaphan, Кстати мне приходилось подобный таймер организовывать, работает довольно стабильно, только цифру для пересчета я не вычислял, а брал значение с параметров проца )
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 13:05 | 12 |
windows.h
0
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
16.11.2011, 13:06 [ТС] | 14 |
Наверное следовало добавить: пишу под убунтой, меряю быстродействие pthread'ов.
Виндовые варианты немного не катят.=)
0
|
Deviaphan
|
16.11.2011, 13:07
#15
|
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
16.11.2011, 13:09 | 16 |
Можно и в пико, но это не означает соответствующей точности: единицы измерения - это одно, погрешность - совсем другое. Берём часы, засекаем время и запускаем функцию, потом часы умножаем на 3 600 000 000 000 000, минуты - на 60 000 000 000 000, секунды - на 1 000 000 000 000, всё складываем и радуемся времени в пикосекундах, но с погрешность плюс/минус несколько секунд. А можно провести измерения каким нибудь сверхточным прибором с точностью до пикосекунды, но результат выразить в годах.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 13:09 | 17 |
0
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
16.11.2011, 13:10 [ТС] | 19 |
taras atavin, да-да, я изучал метрологию.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
16.11.2011, 13:11 | 20 |
0
|
16.11.2011, 13:11 | |
16.11.2011, 13:11 | |
Помогаю со студенческими работами здесь
20
Замерить время выполнения базовых операций Как замерить длительность выполнения кода? Как замерить время сортировки массива? Используя О- символику, найдите время выполнения (как функции от N) процедуры или функции в наихудшем случае Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |