Счетчик циклов ЦП С++

Возможный дубликат:
Получение циклов процессора с помощью RDTSC - почему значение RDTSC всегда увеличивается?
Получить количество циклов процессора?

Я хочу написать код C++, который анализирует алгоритмы сортировки, и мне нужно знать, сколько циклов процессора требуется для сортировки массива.

Любые предложения о том, как это сделать?

Я нашел этот код здесь:

uint64_t rdtsc(){
    unsigned int lo,hi;
    __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
    return ((uint64_t)hi << 32) | lo;
}

Я понимаю, что это встроенная сборка, может кто-нибудь объяснить, как она работает и как ее использовать?

Я запускаю Линукс. Мой компьютер двухъядерный, это имеет значение?


person Ben    schedule 18.12.2012    source источник
comment
Почему бы просто не измерить время стены, как это сделал бы любой нормальный человек?   -  person John Dvorak    schedule 19.12.2012
comment
Если вы используете rdtsc, вы не анализируете алгоритмы сортировки, вы эмпирически измеряете производительность конкретных реализаций этих алгоритмов.   -  person phonetagger    schedule 19.12.2012
comment
@JanDvorak - Не уверен, о каком нормальном человеке вы говорите; Я думаю, что многие программисты, обеспокоенные производительностью, используют rdtsc или что-то подобное.   -  person phonetagger    schedule 19.12.2012
comment
Пожалуйста, прочитайте ответ на Получение циклы процессора с использованием RDTSC — почему значение RDTSC всегда увеличивается?. Кроме того, обратите внимание, что rdtsc всегда предполагает, что вы работаете на одном и том же процессоре.   -  person Jesse Good    schedule 19.12.2012
comment
Комментарий Джассе Гуда решил проблему, спасибо за предложения.   -  person Ben    schedule 19.12.2012


Ответы (1)


Вы смотрели вызов clock?

Это задокументировано здесь и, похоже, это то, что вам нужно.

person abelenky    schedule 18.12.2012
comment
Поправьте меня, если я ошибаюсь. В основном, почему мне нужны циклы процессора, потому что они постоянны, а показания часов зависят от ситуации. - person Ben; 19.12.2012
comment
Из документации: Возвращает процессорное время, потребленное программой. (т.е. не для всего ЦП, а только для этой программы) - person abelenky; 19.12.2012
comment
здорово, это все меняет. - person Ben; 19.12.2012