2010-01-24 4 views
1

Я пытаюсь выполнить некоторые измерения производительности с помощью Intels RDTSC, и это довольно странных вариаций, которые я получаю во время разных тестов. В большинстве случаев мой контрольный показатель в C требует 3000000 Mio циклов, однако точно такое же выполнение может в некоторых случаях принимать 5000000, что почти вдвое больше. Я старался не иметь интенсивных рабочих нагрузок параллельно , чтобы получить хорошие оценки производительности. Любая идея, откуда могут возникнуть такие огромные временные изменения ? Я знаю, что прерывания и прочее могут произойти, но я не ожидал, что такие огромные изменения в сроках!Выбросы во время оценки производительности

PS: Я запускаю его на процессоре Pentium с Linux, работающим на нем.

Спасибо за обратную связь, Джон

ответ

0

Согласно this Wikipedia article, то RDTSC (отметка времени счетчик) не может быть надежно использован для тестирования на многоядерных системах. Нет никакого обещания, что все сердечники имеют одинаковое значение в регистре временной метки.

В Linux лучше использовать функцию POSIX clock_gettime.

+0

спасибо, но я выполняю свои тесты на одноядерной машине – John

2

Я думаю, что ответ находится в:

Я попытался не иметь интенсивных рабочих нагрузок , работающих параллельно

У вас есть недостаточный контроль над этим в современных ОС.

0

Вы должны учитывать тайник большинства современных процессоров. Возможно, другой процесс выдает содержимое вашего кеша вашей программы в случае, когда вы измеряли длительное время. Как отметил Хенк, в современной ОС много вещей, которые вы не можете контролировать.

Смежные вопросы