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

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

Ответы [ 2 ]

1 голос
/ 18 марта 2010

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

0 голосов
/ 18 марта 2010

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

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

...