python: профилировщик, ориентированный на байт-код - PullRequest
4 голосов
/ 02 мая 2011

Я пишу веб-приложение (http://www.checkio.org/), которое позволяет пользователям писать код Python. В качестве одной из метрик обратной связи я хотел бы включить профилирование при выполнении проверок для этого кода. Это позволяетпользователи получают очень грубое представление об относительной эффективности различных решений.

Мне нужно, чтобы профиль был (разумно) детерминированным. Я не хочу, чтобы другая нагрузка на веб-сервер приводила к плохому показателю эффективности.Кроме того, я обеспокоен тем, что некоторые профилировщики не дадут хорошего измерения, потому что эти короткие сценарии выполняются очень быстро. Модуль timeit показывает функцию, запускаемую тысячи раз, но я бы хотел не тратить ресурсы сервера на эти небольшие функции.если возможно.

Непонятно, какой (если таковой имеется) стандартный профилировщик удовлетворяет этой потребности. В идеале профилировщик должен выдавать единицы «тиков байт-кода интерпретатора», которые будут увеличивать по одному на инструкцию байт-кода.1007 * очень грубая мера, но отвечает требованиям детерминизма и высокой точности.

Какую систему профилирования мне использовать?

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Стандартный модуль профилировщика Python обеспечивает детерминированное профилирование .

0 голосов
/ 22 марта 2012

Я также предлагаю попробовать yappi. (http://code.google.com/p/yappi/) В v0.62 он поддерживает профилирование времени процессора, и вы можете остановить профилировщик в любое время ...

...