Лучшие практики для захвата и регистрации производительности программных компонентов - PullRequest
1 голос
/ 20 мая 2011

Я ищу хорошие (желательно самонастраиваемые) решения для диагностики программного обеспечения, которое я разрабатываю. Программное обеспечение, над которым я работаю, имеет несколько компонентов, которые требуют обширных вычислительных ресурсов, и поэтому мы пытаемся оценить производительность этих компонентов по двум причинам: 1) оценить требуемые вычислительные ресурсы и, следовательно, затраты на запуск программного обеспечения, и 2) Определите, что является «улучшением» для компонента (т.е. если мы изменим код и скорость увеличится, тогда это улучшение). Наше приложение состоит из поисковой системы и множества других компонентов, и понимание скорости работы поисковой системы также важно для конечного пользователя.

Кажется, трудно найти решение, так как я не уверен, как правильно определить мою проблему. Но то, что я нашел до сих пор, кажется, основные методы регистрации ошибок. Решение, целью которого является запуск статистики (например, статистических регрессий) из данных, было бы наилучшим. Возможно, в модуле модульного тестирования есть встроенные таймеры тестирования, но нам нужно собирать данные из реальных прогонов нашего приложения, чтобы учесть многочисленные различные сценарии.

Так что на самом деле есть два вопроса:

1) Предопределено ли решение для такого рода тестов?

2) Есть ли хороший справочник для проведения статистических регрессий на такого рода данных? Допустим, мы зафиксировали время выполнения скрипта и размер входных данных (например, запрос). Мы можем уменьшить время на размер данных, чтобы понять влияние изменения размера данных на время выполнения. Но эти виды регрессий являются хитрыми, так как не ясно, каковы все соответствующие переменные. Любая ссылка на анализ данных о производительности будет превосходной и принесет пользу многим людям, которым я верю!

Спасибо Matt

1 Ответ

0 голосов
/ 20 мая 2011

Большие приложения, подобные этим, будут выполнять большую часть непроцессорной обработки, так чтобы найти точки оптимизации вам понадобится выборка на основе настенных часов, а не на базе процессора.

gprof и некоторые другие делают выборку только по времени процессора , поэтому они не могут видеть ненужные операции ввода-вывода или другие системные вызовы. Если вам удастся найти и устранить проблемы с нагрузкой на процессор, то нагрузка на ввод-вывод станет только большей частью.

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

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