ТЕХНИКА ОПТИМИЗАЦИИ ПРОГРАММ

       

AMD Code Analyst


Рисунок 4 0x007 Логотип профилировщика AMD Code Analyst

AMD Code Analyst на два порядка уступает своему прямому конкуренту VTune, и я бы ни за что не порекомендовал использовать его в качестве вашего основного профилировщика. Опасаясь быть побитым агрессивными поклонниками AMD, я все же позволю перечислить основные недостатки Code Analyst'a:

Во-первых, он требует обязательно наличия отладочной информации в профилируемой программе. Программу без отладочной информации он просто откажется загружать! Компиляторы же, в подавляющем своем большинстве, никогда не помещают отладочную информацию в оптимизированные программы. Это объясняется тем, что оптимизация, внося значительные изменения в исходный код, уничтожает прямое соответствие между номерами строк программы и сгенерированными машинными инструкциями. Фактически, оптимизированная и не оптимизированная программа – это две разные программы, имеющие различные, пусть и пересекающиеся, подмножества горячих точек. Профилировка не оптимизированного варианта программы принципиально не позволяет найти и устранить все узкие места настоящего приложения. (При отключенной оптимизации узкие места могут быть найдены там, где их нет).

Во-вторых, разрешающая способность его диаграмм ограничивается строками исходного текста программы, но, увы, не машинными командами (как у VTune). И хотя в принципе Code Analyst позволяет засекать время выполнения каждой инструкции, он не предоставляет никаких механизмов выделения "горячих" точек на этом уровне. Всю работу по выявлению "тяжеловесных" машинных команд нам приходится выполнять самостоятельно, "вручную" просматривая столбик цифр колонки CPI (Cycle per Instruction). Надо ли говорить, что даже в относительно небольшом участке программе количество машинных команд может достигать нескольких тысяч и подобный "кустарный" анализ их температур может растянуться черт знает на сколько времени.

В-третьих, Code Analyst не дает никаких советов по ликвидации выявленных узких мест программы, что не очень-то обрадует программистов-новичков (а таковых, как показывает практика, большинство и лишь очень немногие из нас поднаторели в оптимизации).


В-четвертых, Code Analyst просто неудобен в работе. Неразвитая система контекстных меню, крайне не конфигурабельный и вообще аскетичный интерфейс, отсутствие возможности сохранения "хронологии" профилировки… все это придает ему черты незаконченной утилиты, написанной на скорую руку.

Тем не менее, Code Analyst весьма компактен (его последняя на данный момент версия 1.1.0 занимает всего 16 мегабайт, что на порядок меньше VTune), стабилен и устойчив в работе и главное – он содержит полноценный эмулятор процессоров K6-II, Athlon

(с внешним и интегрированным кэшем), Duron, включая и их мобильные реализации. Причем, возможно вручную выбирать частоту шины и ядра. Это полезно хотя бы для оценки влияния частоты шины на производительность, что особенно актуально для приложений интенсивно работающих с основной оперативной памятью (жалко, но VTune лишен этой возможности). Наконец, Code Analyst содержит толковую справку, сжато и внятно описывающую узкие места процессора. И – самое приятное – он, в отличии от VTune, абсолютно бесплатен!

В конечном счете, независимо от степени своих симпатий (антипатий) к этому профилировщику, правило хорошего тона программирования обязывают использовать его для оптимизации ваших приложений под процессор Athlon, который занимает весьма существенную долю рынка и этим фактом нельзя пренебрегать!


Содержание раздела