Книга: Искусство программирования для Unix
15.7. Профилирование
15.7. Профилирование
Общее правило: 90% времени выполнения программы тратится на 10% ее кода. Профайлеры представляют собой инструменты, способствующие идентификации этих 10% "горячих точек", которые ограничивают скорость программы, а значит, профайлеры — это хороший способ повышения скорости.
Однако в традиции Unix профайлерам отводится гораздо более важная функция. Они позволяют разработчику не оптимизировать оставшиеся 90%. И это не только сокращает объем работ. Действительно ценный эффект заключается в том, что программист, который не оптимизирует 90% кода, сдерживает глобальную сложность и сокращает количество ошибок.
В данной связи можно процитировать Дональда Кнута: "Преждевременная оптимизация — корень всех зол". Это голос опыта. Необходимо тщательно проектировать конструкцию и, прежде всего, подумать, что является верным. Регулировку в целях повышения эффективности можно сделать позднее.
В этом разработчику помогают профайлеры. Если выработать полезную привычку использовать их, то можно избавиться от вредной привычки преждевременной оптимизации. Профайлеры изменяют не только способ работы программиста, но и образ его мышления.
Профайлеры для компилируемых языков зависят от измерения параметров объектного кода, поэтому они еще больше зависят от платформы, чем компиляторы. С другой стороны, профайлер компилируемого языка не заботится об исходном языке измеряемой им программы. В Unix один профайлер gprof(1) обрабатывает С, С++ и все остальные компилируемые языки.
Языки Perl, Python и Emacs Lisp имеют собственные профайлеры, включенные в их базовые дистрибутивы. Такие профайлеры переносятся на все платформы, где работают данные языки. В языке Java имеется встроенное профилирование. Tcl все еще не имеет поддержки профилирования.
- 15.1. Операционная система, дружественная к разработчику
- 15.2. Выбор редактора
- 15.3. Генераторы специализированного кода
- 15.4. Утилита make: автоматизация процедур
- 15.5. Системы контроля версий
- 15.5.4. Unix-инструменты для контроля версий
- 15.6. Отладка времени выполнения
- 15.7. Профилирование
- 15.8. Комбинирование инструментов с Emacs
- 15.8.4. Emacs и профилирование
- Профилирование сотрудников, работающих с клиентами
- A.3. Профилирование
- 3.2 Профилирование
- 3. Отладка и профилирование
- Профилирование городов с точки зрения наличия возможностей для компании
- 15.1. Операционная система, дружественная к разработчику
- Глава 8. Как маркетологи контролируют мировую экономику с центрами в городах