Выбросы во время оценки эффективности - PullRequest
1 голос
/ 24 января 2010

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

PS. Я использую его на процессоре Pentium с установленным на нем Linux.

Спасибо за отзыв, John

Ответы [ 3 ]

2 голосов
/ 24 января 2010

Я думаю, что ответ в:

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

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

0 голосов
/ 24 января 2010

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

0 голосов
/ 24 января 2010

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

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

...