В настоящее время я изучаю C
оптимизацию реализации различных алгоритмов (которые я в настоящее время реализовал на Python).
Чтобы помочь мне сравнить реализации C
и Python
, я хочу измерить время выполнения функции.
Используя Python
, iPython REPL
предлагает фантастическую функциональность %timeit
, которая эффективно повторяет функцию много раз и отображает среднее время выполнения и индикацию вариации по сравнению с тем, сколько раз она выполнялась? Это работает для времени выполнения, варьирующегося от наносекунд до многих секунд.
В C
я читал о команде time
, которую можно добавить в код, чтобы сообщать о времени выполнения одного запуска. Однако у этого есть 2 ограничения:
1) только миллисекундное разрешение
2) это только «однократное» измерение.
Поэтому мой вопрос: существуют ли какие-либо лучшие/альтернативные подходы или пакеты для C, которые позволят быстро, но точно (т.е. даже работать для быстрых функций времени выполнения ns) отображать время выполнения?
%timeit
запускает код много раз, чтобы получить среднее время, вам просто нужно сделать то же самое в вашей программе на C. - person Barmar   schedule 26.10.2019C
кажется ограниченной мс, что слишком медленно для точного профилирования. - person SLhark   schedule 26.10.2019return
утверждение? - person lenik   schedule 26.10.2019gettimeofday
, чтобы получить время с разрешением в микросекунды, илиclock_gettime
, чтобы получить разрешение в наносекундах. Или вы можете вызватьclock()
, чтобы получить процессорное время с разрешением в доли секунды, определяемымCLOCKS_PER_SEC
. (А с помощьюclock_gettime
вы можете выбирать между стеной, прошедшим временем или процессорным временем.) - person Steve Summit   schedule 26.10.2019