Есть ли что-то вроде clock(), которое лучше работает для параллельного кода?

StackOverflow https://stackoverflow.com/questions/2467132

Вопрос

Итак, я знаю, что clock() измеряет тактовые циклы и, следовательно, не очень хорош для измерения времени, и я знаю, что существуют такие функции, как omp_get_wtime() для получения времени на стене, но меня расстраивает то, что время на стене меняется так очень много, и мне было интересно, есть ли какой-нибудь способ измерить отдельные тактовые циклы (только один цикл, даже если в нем выполняется более одного потока).Это должно быть что-то относительно простое/родное.Спасибо

Это было полезно?

Решение

См. ответ FreeMemory на этот вопрос для RDTSC, если вы используете x86, который я тестировал и, кажется, отлично работает в моей системе (mac), но смотрите мой ответ на этот вопрос.Также см. критику РДТСК. здесь.

Однако обычно не стоит опускаться до слишком низкого уровня детализации, другие части работы, которую должен выполнить компьютер, будут использовать тактовые циклы, поэтому они будут варьироваться в зависимости от нагрузки.я нахожу omp_get_wtime() достаточно, хотя мне нужно поместить свой код в дополнительный цикл, чтобы убедиться, что для обеспечения согласованных результатов от запуска к запуску требуется около секунды.

Другие советы

Вы уверены, что измерение времени вам не подойдет?Имейте в виду, что вы можете измерить только определенное количество миллисекунд, в зависимости от ОС.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top