У меня есть функция, которая является узким местом моей программы. Он не требует доступа к памяти и требует только вычисления. Это внутренний цикл и называется много раз, поэтому любая небольшая прибыль от этой функции является большим выигрышем для моей программы.
Я исхожу из фона в оптимизации кода SPU на PS3, где вы берете программу SPU и запускаете ее через анализатор конвейера, где вы можете поместить каждый оператор сборки в свой собственный столбец и минимизировать количество циклов, которые выполняет функция. Затем вы накладываете петли, чтобы еще больше минимизировать зависимость конвейера. С этой программой и списком всех циклов, которые принимает каждая инструкция по сборке, я мог бы оптимизировать гораздо лучше, чем когда-либо мог компилятор.
На другой платформе у меня были события, которые я мог зарегистрировать (промахи кэшей, циклы и т.д.), и я мог запускать функцию и отслеживать события ЦП. Это тоже было хорошо.
Теперь я делаю проект хобби в Windows с помощью Visual Studio С++ 2010 с процессором Core i7 Intel. У меня нет денег, чтобы оправдать оплату большой стоимости VTune.
Мой вопрос:
Как профилировать функцию на уровне сборки для процессора Intel в Windows?
Я хочу компилировать, просматривать дизассемблирование, получать показатели производительности, корректировать код и повторять.