Лучший подходящий таймер для правильного измерения времени доступа к кешу

0

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

Я хотел бы найти время доступа к кешу L2, установленное путем доступа к элементам массива, загруженным в кеш. Чтобы найти время доступа для всех наборов кеша L2, заданных путем вычисления времени набора, я пробовал различные параметры, такие как - rdtsc(), gettimeofday(), но не получал точный результат, как ожидалось.

Я использую intel i7 в linux с gcc 4.8. Каков наилучший таймер для вычисления времени доступа к кешу с большей точностью.

мой подход следующий

for ( j=0; j<100000;j++
{

for ( set_no = 0 ; set_no< 4096; set_no ++)
{ 

start= rdtsc()
{
access all blocks of a set = set_no;
}
end = rdtsc()


time_taken[set_no]+= end -start ;
}
}

for(set_no=0;set_no<4096;set_no++)
printf(" time needed for access set %d = %llu", set_no, time_taken[set_no]/100000);

Я хотел бы узнать, доступен ли BEST/SUITABLE Timer на C или C++?

Мне нужно предотвратить выполнение внепорядка в i3/i7, чтобы получить правильное измерение времени, поэтому требуется SERIALIZATION таймера. * Какой таймер я должен использовать, чтобы получить правильный результат с SERIALIZED OUTPUT. rdtsc() имеет OPTION для сериализации выхода таймера, У другого таймера тоже есть то же самое?

следует ли использовать другую опцию для расчета времени, чтобы получить лучший результат? Заранее спасибо.

Теги:
gcc
performance-testing

1 ответ

0

Поскольку ваш компилятор способен на С++ 11, я бы пошел с std :: chrono :: high_resolution_clock. Для http://en.cppreference.com/w/cpp/chrono/high_resolution_clock:

Класс std :: chrono :: high_resolution_clock представляет часы с наименьшим периодом тика, обеспечиваемым реализацией.

  • 0
    high_resolution_clock имеет низкое разрешение в Visual Studio, вместо этого используйте steady_clock >. <

Ещё вопросы

Сообщество Overcoder
Наверх
Меню