Высокоточные таймеры процессора - PullRequest
0 голосов
/ 11 августа 2010

Эксперт по высокооптимизированному коду однажды сказал мне, что важной частью его стратегии является наличие высокопроизводительных таймеров на процессоре. Кто-нибудь знает, что это такое и как можно получить к ним доступ для тестирования различных оптимизаций кода?

Хотя мне и интересно, я также хотел спросить, можно ли получить к ним доступ из чего-то более высокого, чем сборка (или только с небольшой сборкой), через Visual Studio C ++?

Ответы [ 3 ]

4 голосов
/ 11 августа 2010

Это будет зависеть от платформы, но так как вы упомянули Visual Studio, я буду использовать Windows.

Вам нужно QueryPerformanceCounter в win32.Вы также можете использовать StopWatch в .Net.

Re: разрешение StopWatch
Непосредственно из связанной документации

Использованиеполя Frequency и IsHighResolution для определения точности и разрешения реализации синхронизации секундомера.

Другими словами, это может быть высокое или низкое разрешение.В случае, если оно низкое, а вам нужно высокое, вы могли бы вызвать функции таймера win32 (QueryPerformanceCounter и т. Д.)

2 голосов
/ 11 августа 2010

QueryPerformanceCounter () и связанные функции в Win32 используют высокопроизводительные таймеры, встроенные в большинство современных чипов Intel.

1 голос
/ 11 августа 2010

Точность вашего таймера полностью зависит от вашего оборудования. Если ваше оборудование не может измерить что-то меньше микросекунды, невозможно быть более точным, чем с точностью до ближайшей микросекунды.

По моему опыту, мне никогда не требовалась более высокая точность, чем миллисекунды для измерения производительности. Если вы не создаете микроконтроллер, где каждая инструкция по сборке имеет решающее значение для вашей скорости, любой заметный перепад скорости будет порядка секунд, а не микросекунд. И если вы используете Visual C ++, вряд ли вы будете работать на микроконтроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...