Современные процессоры используют всевозможные уловки, чтобы преодолеть разрыв между большой скоростью их элементов обработки и запоздалостью внешней памяти. В приложениях, критичных к производительности, то, как вы структурируете свой код, часто может существенно повлиять на его эффективность. Например, исследователи, использующие анализатор SLO , смогли исправить проблемы с локальностью кэша и удвоить скорость выполнения нескольких тестовых программ SPEC2000. Я ищу рекомендации для инструмента с открытым исходным кодом, который использует поддержку мониторинга производительности процессора для определения и анализа неэффективных архитектурных решений, таких как ошибки в кеше, ошибочные прогнозы ветвлений, интерфейсные остановки, загрязнение кеша из-за псевдонимов адресов, длинных инструкций по задержке и пропусков TLB. , Мне известны Intel VTune (коммерческий), AMD CodeAnalysist (бесплатный, но не с открытым исходным кодом) и Cachegrind (зависит от симуляции).