пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Профилирование проекта

  1. Профилирование проекта

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

Характеристики могут быть аппаратными (время) или вызванные программным обеспечением (функциональный запрос). Инструментальные средства анализа программы чрезвычайно важны для того, чтобы понять поведение программы. Проектировщики ПО нуждаются в таких инструментальных средствах, чтобы оценить, как хорошо выполнена работа. Программисты нуждаются в инструментальных средствах, чтобы проанализировать их программы и идентифицировать критические участки программы.

Это часто используется, чтобы определить, как долго выполняются определенные части программы, как часто они выполняются, или генерировать граф вызовов (Call Graph). Обычно эта информация используется, чтобы идентифицировать те участки программы, которые работают больше всего. Эти трудоёмкие участки могут быть оптимизированы, чтобы выполняться быстрее.

Также выделяют анализ покрытия (Code Coverage) — процесс выявления неиспользуемых участков кода при помощи, например, многократного запуска программы.

Профилирование это анализ потребления ресурсов при работе программы. Этимология слова видимо связана с тем что профиль это некая граница, отсюда - поиск границ компонентов ПО в ресурсном пространстве. В моём случае программа это исполняемые php-скрипты, а ресурсы это время, память и нагрузка на процессор. Время исполнения не всегда связано с нагрузкой процессора. Процесс может ждать IO-ответа от более медленных источников, а может и просто спать.

Я писал про микрооптимизацию в php. Как правило отмечали критики, в общем случае она не нужна. Профилирование это взгляд с высоты птичьего полёта на подключаемый код. Он делается только на рабочей машинке, а не на production. В некоторых LAMP-сборках инструменты для этого уже установлены.

Пример программ, профилирующих производительность

Многоплатформенные универсальные решения:

·      gprof[en] (Linux/Unix/*BSD) — несколько реализаций традиционного профилировщика, требующие инструментирования программы компилятором.

·      VTune (Windows/Linux) — коммерческий продукт компании Intel

·      Intel® Single Event API (Windows/Linux/Android/MAC OS/...) - не коммерческий продукт компании Intel с открытым исходным кодом

·      CodeAnalyst (Windows/Linux) — бесплатная программа от компании AMD

Решения для отдельных операционных систем

·      AQtime (Windows)

·      Instruments[en] (ранее Shark; Mac OS X)

·      Perf (Linux)[en] — реализованная в ядре Linux система профилирования процессов и ядра

·      oprofile (Linux) — более ранний системный профилировщик Linux

·      Valgrind (Linux) — средство динамического двоичного анализа программ, содержит 2 плагина для профилирования производительности — Cachegrind и Callgrind.

Для отдельных языков программирования (подобные инструменты могут быть встроены в среду разработки):

·      Xdebug — средство профилирования PHP скриптов.

·      XHProf — профилировщик для языка PHP.

Пример программ, профилирующих потребление памяти:

·      dotTrace (.NET)

·      Valgrind (Linux) — несколько плагинов для профилирования памяти.

 


22.06.2017; 21:23
хиты: 138
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь