Эффективный кеш и BLOB - профилирование попаданий / промахов в кеш - PullRequest
5 голосов
/ 21 августа 2011

Для того, чтобы программа работала с кешем, используемые данные должны храниться линейно, верно?

Поэтому вместо динамического выделения я помещаю свои данные в большой двоичный объект, используя линейный распределитель.Это достаточно для улучшения производительности?что мне следует сделать, чтобы еще больше повысить эффективность кэширования?

Я знаю, что эти вопросы не являются конкретными, но я не знаю, как это объяснить ...

Какие программы могут помочь мне профилировать кэшхиты / промахов?

Ответы [ 3 ]

5 голосов
/ 21 августа 2011

Если вы ищете профилировщик для Windows, вы можете попробовать CodeAnalyst AMD или VerySleepy , оба из них бесплатны, однако AMD является более мощным из двух (и работаетна оборудовании Intel, но в iirc вы не можете использовать аппаратное профилирование), оно включает в себя мониторинг таких вещей, как ошибки прогнозирования переходов и использование кэша.Профилирование великолепно, так как оно говорит вам, что оптимизировать, но вы не всегда знаете как , для этого вам следует взглянуть на Руководства по оптимизации Agner Fog в сочетании с Руководство по оптимизации Intel (в нем много информации об оптимизации локальности и кэширования)

3 голосов
/ 21 августа 2011

Если вы работаете в Linux, вы можете использовать Valgrind (в частности, инструмент cachegrind).

Если вы работаете в Windows, VS2010 (2008) Professional Edition имеет встроенный профилировщик, ноне знаю каких-либо подробностей о его возможностях профилирования кэша.Есть также Intel VTune Analyzer (Усилитель).Оба они являются коммерческими продуктами, хотя я думаю, что вы можете получить пробные копии на 30 дней.

Некоторые другие вопросы по SO, которые могут быть полезны:

0 голосов
/ 27 августа 2017

В Linux вы можете использовать perf mem для выборки обращений к памяти, включая очень мелкозернистые пропуски (включая адрес пропуска), как описано здесь .

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