|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
Как с точностью до микросекунд замерить время выполнения функции?16.11.2011, 12:33. Показов 33749. Ответов 89
Метки нет (Все метки)
0
|
|
| 16.11.2011, 12:33 | |
|
Ответы с готовыми решениями:
89
Как получить время с точностью для микросекунд? Замерить время выполнения Замерить время выполнения потока |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 16.11.2011, 13:12 | ||||||
|
Svinina,
0
|
||||||
| 16.11.2011, 13:14 | ||
|
Не по теме:
0
|
||
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
| 16.11.2011, 13:18 [ТС] | |
|
А функция clock в чем выдает время?
Не по теме: в мане про нее почему-то ничего не могу найти Добавлено через 1 минуту ForEveR, там где я буду тестить программу, boostа скорее всего нет.
0
|
|
|
Заблокирован
|
||
| 16.11.2011, 13:22 | ||
|
Но я знаю, что тесты тем более точные, чем больше делалось количество замеров. И брать нужно усредненные значения. И в любом случае будит погрешность. Вопрос только в том, какая. На одно процессорном компе оценивать секунды тиками с помощью rdtsc было вполне нормальным вариантом. Во всяком случае разбега в показаниях сильного не наблюдалась. А вот на многоядерниках сразу затупила.
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 17.11.2011, 11:03 | |
|
Можно и через std::chrono. Но там в system_clock взависимости от системы измерение выбирается... С кастом не разбирался.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 17.11.2011, 11:14 | ||
|
Добавлено через 9 минут Кстати, можно поднять и точность циклом. Какова погрешность измерения длительности при значениях порядка минуты? Если даже плюс/минус секунда, а цикл на миллион ровно в эту минуту уложится, то вот вам и точность одного прохода плюс/минус микросекунда: делим время всего цикла на число повторов, относительная погрешность сохраняется, а абсолютная делится на тот же делитель. Мало того, точно таким же образом можно даже с помощью обычных часов без секундной стрелки получить точность плюс/минус наносекунда: повтори 300 миллиардов раз, а общее время измерь с точностью плюс/минус 5 минут, потом раздели и радуйся сверхточности, но только в абсолютном, а не относительном выражении. Но надо, чтоб проверка счётчика и переход в начало цикла выполнялись много быстрее однократного исполнения самой функции, иначе добавляется значимая погрешность самого цикла.
0
|
||
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 17.11.2011, 11:21 | |
|
taras atavin, Никакой точности ты так не получишь. Если измерять время работы программы, то оно в зависимости от разных внешних причин будет различным, причем будет отличаться на миллисекунды. И твое значение с точностью микросекунда, будет не ценнее чем значение с точностью миллисекунда.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 17.11.2011, 11:22 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 17.11.2011, 11:52 | |||
|
Добавлено через 2 минуты
0
|
|||
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 17.11.2011, 11:53 | |
|
taras atavin, Мы это прекрасно все знаем, но вот смотри, допустим ты получишь какое то значение с точностью до микросекунды. Запускаем программу еще раз и новое значение отличается от твоего на 30 миллисекунд, и где точность?
0
|
|
|
Заблокирован
|
||
| 17.11.2011, 11:54 | ||
|
Речь идёт о стабильно корректных результатах, которым можно доверять. Для этого и используют статистику
0
|
||
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 17.11.2011, 11:57 | |
|
Bers, Так понятно что не дадут, я о том и говорю.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 17.11.2011, 12:01 | |
|
Чтобы получить "усреднённое" время выполнения функции лично я готов сделать порядка десяти запусков. Не более.
И это в автоматическом режиме.) Добавлено через 44 секунды taras atavin, математический смысл несколько отличается от практического.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 17.11.2011, 12:01 | ||||||
|
Переносимый вариант без буста.
0
|
||||||
|
Заблокирован
|
||
| 17.11.2011, 12:09 | ||
|
А если ещё математически её дополнительно можно улучшить хитроумными формулами, совсем хорошо. Но вообще то, если очень сильно надо высокую точность, нужно выбирать другую ОС
0
|
||
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 17.11.2011, 12:14 | |
|
Bers, Так в том то и дело что taras atavin предлагает считать в миллисекундах по таймеру, а потом статистическим методом получить точность до микросекунды.
Под многозадачной операционкой можно получить точность до микросекунды, но только для каких то вычислений, но не для программы, притом забив одно ядро проца на 100%
0
|
|
|
Заблокирован
|
||
| 17.11.2011, 12:19 | ||
|
По крайней мере, даже не являясь математиком, и в многозадачных системах можно оценивать, насколько один алгоритм медленее/быстрее другого. А вот фактическое время выполнения функции в многозадачных измеряют только в пределах некоторых погрешностей. Сами единицы измерения - всего лишь единицы измерения. Какая тебе разница сколько это в среднем в милли, или микро секуднах? Главное, что бы из общего графика не выбивалась
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 17.11.2011, 12:21 | |
|
0
|
|
|
Заблокирован
|
||
| 17.11.2011, 12:29 | ||
|
Но с привязкой по времени - это вдвойне суровая мысль. Научите заранее считать фпс?
0
|
||
| 17.11.2011, 12:29 | |
|
Как замерить время работы функции? Замерить время выполнения базовых операций Как замерить длительность выполнения кода? Как замерить время сортировки массива? Используя О- символику, найдите время выполнения (как функции от N) процедуры или функции в наихудшем случае Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу:
https:/ / github. com/ altbodhi/ ReConMan
По итогу пришел к мысли, что DU не дружат с существующими технологиями.
От сериализации до отображения в реляционную. . .
|
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|