Профили фреймворков с открытым исходным кодом? - PullRequest
7 голосов
/ 22 октября 2008

Вы когда-нибудь хотели протестировать и количественно показать, будет ли ваше приложение работать лучше в виде статической сборки или совместно используемой сборки, с разделом или без раздела, с upx или без upx, gcc -O2 или gcc -O3, hash или btree и т. Д. и т.д. Если это так, это тема для вас. Существуют сотни способов настройки приложения, но как мы собираем, организуем, обрабатываем, визуализируем последствия каждого эксперимента.

Я искал в течение нескольких месяцев среду разработки / профилирования производительности приложений с открытым исходным кодом, похожую по концепции на Perftastic в Mozilla, где я могу разрабатывать / создавать / тестировать / профилировать сотни воплощений различных экспериментов по настройке.

Некоторые требования:

Платформа

SUSE32 и SUSE64

Формат данных

Очень гибкий, компактный, простой, иерархический. Есть несколько возможностей, включая

Сбор данных

Гибкие и настраиваемые плагины. Из приложения можно получить много данных, включая данные о производительности из / proc, время sys, время стены, использование ЦП, профиль памяти, утечки, журналы valgrind, фрагментацию арены, ввод-вывод, сокеты localhost, размер двоичного файла, открытые fds, и т.д. И некоторые из хост-системы. Мой язык для этого - Python, и я бы разработал эти плагины для мониторинга и / или анализа данных во всех различных форматах и ​​сохранения их в формате данных платформы.

Tagging

Все эксперименты будут помечены, включая данные, такие как версия GCC и параметры компиляции, платформа, хост, параметры приложения, эксперимент, тег сборки и т. Д.

Graphing

История, Сравнительная, Иерархическая, Динамическая и Статическая.

  • Сборки приложений выполняются специальным сервером CI, который выпускает новую версию приложения несколько раз в день последние 3 года подряд. Вот почему нам нужен постоянный анализ тенденций. Когда мы добавляем новые функции, исправляем ошибки, меняем параметры сборки, мы хотим автоматически собирать данные профилирования и видеть тренд. Именно здесь необходимо генерировать различные статические сборки.
  • Для анализа Динамические графики Mozilla отлично подходят для сравнительного построения графиков. Было бы здорово иметь сравнительный график между разными тегами. Например, сравните N версий сборки, сравните платформы, сравните варианты сборки и т. Д.
  • У нас есть набор тестов из 3K тестов, данные будут собираться для каждого теста и группироваться из данных между тестами, для каждого теста, для каждой отмеченной группы, для завершения набора регрессии.
  • Возможности включают RRDTool , Orca , Графит

Анализ по группам

  • Min
  • Макс
  • Медиана
  • Avg
  • Стандартное отклонение

Презентация

Все это будет представлено и проконтролировано через сервер приложений, желательно Django или TG.

Вдохновение

Ответы [ 3 ]

2 голосов
/ 30 марта 2009

На этой неделе на PyCon был разговор о различных методах профилирования на Python. Я не думаю, что что-то настолько полно, как то, что вы ищете, но это может стоить посмотреть. http://us.pycon.org/2009/conference/schedule/event/15/

Вы сможете найти реальный разговор позже на этой неделе на blip.tv http://blip.tv/search?q=pycon&x=0&y=0

0 голосов
/ 30 октября 2009

Возможно, вам придется построить то, что вы ищете, но вы можете начать с

  • Valgrind
  • Люк Stackwalker
  • множество других проектов с открытым исходным кодом

Кроме того, когда целью является не столько измерение производительности, сколько улучшение ее, вы можете получить некоторые идеи из this , где Это является примером его использования.

0 голосов
/ 22 октября 2008

Я не уверен, в чем конкретно заключается ваш вопрос, но для профилирования Java (веб-приложений) вы можете использовать netbeans profiler и profiler4j (доступно в sourceforge). Я использовал оба и могу рекомендовать их через затмение tptp.

См. Как настроить Eclipse TPTP

и http://profiler4j.sourceforge.net/

edit: Извините, только что заметил, что вы пометили это как вопрос Python, так что это не должен быть правильный ответ для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...