Use profiling, Luke

Thursday, 3 July 2008 13:50
skiminok: (Compas)
[personal profile] skiminok
Каждый день в этом мире узнаешь что-то для себя новое. И нет воистину предела совершенству. В частности, ваш покорный слуга, который доселе считал себя в достаточной степени осведомлённым о средствах и инструментах для написания качественного сорса, дочитал-таки шедевральный труд Стива Макконнелла "Совершенный код". Где, в числе прочего, в нескольких абзацах автор упомянул про такое замечательное средство управления производительностью, как профилирование...
Я заинтересовался. Я дико заинтересовался. Я стал рыться в поисках достойного профайлера. Попутно к своему сожалению выяснил, что они все в подавляющем большинстве проприетарные, но это дело десятое. Не в этом дело. Прошло два часа и я добился своего... В пик экстаза меня вогнал откопанный на просторах Википедии AQtime...

Первый факт, от которого руки затряслись мелкой и жадной дрожью - список поддерживаемых сред программирования (и языков):
  • Visual Studio 2008
  • Visual Studio 2005
  • Visual Studio .NET (2002, 2003)
  • Visual C++ (5, 6, 7)
  • Visual Basic (6)
  • Borland Developer Studio 2006
  • Delphi (3, 4, 5, 6, 7, 8, 2005, 2006, 2007)
  • C++Builder (3, 4, 5, 6, 2006, 2007)
  • Borland C++ (4.5, 5.x)
  • Intel C++ (7.0 and later)
  • GCC
  • Compaq Visual Fortran (6.5)
  • Intel Fortran (9.0)
Во второй раз моя потенциальная преданность AQtime'у подскочила в несколько раз после просмотра демонстрационной флэшки (кстати, для поклонников M$ VS - вам сюда)

Однако окончательный восторг, разумеется, утвердился после установки профайлера...
(Иллюстрирую на CodeGear RAD Developer Studio 2007, для прочих - идентично.)
Вот обычное приложение, за пару минут написанное для выяснения временной разницы между for и for-in:


Один маленький правый клик, один маленький выбор, что именно мы собираемся профилировать: модуль, класс или отдельную функцию?


Можно также профилировать и весь проект, тогда в рапорт вдобавок к вашему коду добавится оценка ещё и всяческих системных вызовов WinApi.


Запускаем, организовываем какую-то активность программы (в частности, я сделал 6 кликов мышки по окну), короче - всё как обычно. Программа благополучно завершилась, и...
Знакомьтесь, это - рапорт. Выглядит не очень впечатляюще, поскольку в демонстрационной программе был всего лишь один метод, и табличка вышла никакая. Но всё же... вы без труда можете представить себе серьёзный проект, в котором этих методов - много-много десятков.
Возможных характеристик для показа (столбиков в рапорте) - 28, включая 5 показанных по дефолту.
Также доступны красивые настройки альтернативного вида - не в числах, а графические.


Переходим к окну кода... и здесь нас ожидает сюрприз :)
Как вы понимаете, характеристики слева тоже можно варьировать. В данном случае это Time и Hit Count.


Что ещё можно рассказать? К примеру, про дополнительные средства: дизассемблер, граф вызовов (для данного приложения состоит из одной вершины ), диаграммы...




Профилирование - это замер не только времени. В эту отрасль инструментов для разработчика входит целый десяток разнообразных средств для тестирования производительности вашей программы. И все их, разумеется, включает в себя AQtime


Так, пора закругляться с этим восторженным описанием. А то я скоро захламлю своими скринами весь ЖЖ, и бедным пользователям не останется места на серваке, чтобы писать слезливые лытдыбры)) В общем, информацию кто хотел - тот получил. А я пока что закругляюсь. И топаю оптимизировать свои наработки, благо теперь это составляет гораздо меньший труд

UPD: заюзан HTML, поправлены размеры картинок.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

skiminok: (Default)
skiminok

Most Popular Tags

July 2011

S M T W T F S
     12
3456789
10111213141516
17181920212223
242526272829 30
31