Я работаю над модулем компилятора, который добавляет дополнительные инструкции к каждой загрузке / сохранению в приложении с акцентом на объекты кучи. Одним из факторов производительности является размер объекта, к которому осуществляется доступ; разные инструкции выбираются во время выполнения для разных размеров объекта.
Я выбрал несколько тестов SPEC для оценки влияния моих изменений на производительность. В настоящее время я ограничен только просмотром накладных расходов, измеряемых перфом. Это приводит к значительному количеству предположений о том, почему одни контрольные показатели оказываются более серьезными, чем другие. Подкрепление каждой гипотезы большим количеством данных кажется хорошим шагом. Из каждого теста для каждого объекта, размещенного в куче, было бы полезно узнать:
- Размер каждого выделения или перераспределения кучи
- Количество обращений к каждому выделению во время выполнения приложения.
Я был успешным в # 1. Было достаточно легко внедрить несколько вызовов printf () в glibc, так как я уже работаю с glibc. Я не знаю, как получить # 2; счетчики доступа кажутся гораздо лучше подходящими для фреймворка или инструмента-обертки, и я не знаю, какой из них будет работать лучше.
Можете ли вы дать рекомендации по сбору этой информации?