Простой, но все же сложный вопрос:
Какой счетчик использовать для получения инструментов для измерения времени на настенных часах?
Как базовая строка, первое, что нужно при профилировании кода, я думаю, что мне нужно измерить это просто время настенных часов, чтобы получить первое представление о том, где код занимает большую часть времени. Мне все равно, ограничен ли ввод-вывод, ограничена ли пропускная способность, или что-то еще, я просто хочу знать, где он медленный.
Звучит простое требование, но со всеми многими хитростями, которые современные ЦП делают для эффективной работы (например, масштабирование частоты и т. Д. 1013 *.) И чертовски много разных (не очень хорошо документированных) счетчиков производительности, доступных в perf, непросто быть уверенным в правильности измерения.
В настоящее время я делаю:
perf record -g -e ref-cycles -F 999 -- <cmd>
Я думаю, что это немасштабированная частота процессора и, следовательно, пропорциональна количеству времени настенных часов, которое составляет часть код работает. Но кто, черт возьми, знает?