Как профилирование Python влияет на производительность?
Я рассматриваю возможность профилирования приложения Python в производстве (например, веб-сайта Django). Я нашел много вариантов, которые позиционируются как легкие и демонстрируют , как они используются (включая cProfile , vmprof , yappi и DTrace/SystemTap), но я изо всех сил пытаюсь понять, какое негативное влияние на производительность я могу ожидать, пока Профайлер работает. Это будет важным фактором при определении того, подходит ли конкретный инструмент для профилирования в производственной среде.
Можно ли предвидеть влияние конкретного профилировщика на производительность без экспериментов в тестовой среде?
1 ответ
Профилировщик сам по себе не ускорит вашу программу, а только подскажет, где программа проводит больше всего времени. Предположим, ваш профилировщик сообщает вам, что программа находится в func1 1% времени и в func2 80% времени. Если вы заставите func1 работать в два раза быстрее, вы ускорите свою программу примерно на 0,5%. Если вы заставите func2 работать в два раза быстрее, вы ускорите свою программу на 40%. Потратьте свое время и усилия на func2.
Как сделать функции быстрее? Простого ответа нет, но есть много сайтов, которые говорят об этом (ищите Python Performance). Какой прирост производительности вы можете ожидать? Опять же, нет простого ответа. Мое эмпирическое правило - увеличение в два раза, но ваш пробег, вероятно, будет другим?