Профилирование Python в Windows, как вы игнорируете встроенные функции

StackOverflow https://stackoverflow.com/questions/2741520

Вопрос

Я не был способен найти это в любом месте онлайн. Я искал, чтобы узнать, используя профилировщик, как лучше оптимизировать мой код, а при сортировке, по которым функции используют максимально совокупность, такие вещи, как STR (), Print и другие подобные широко используемые функции, съедают большую часть профиля. Какой лучший способ профилировать программу Python, чтобы получить пользовательские функции, чтобы увидеть, какие области их кода они могут оптимизировать?

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

Это было полезно?

Решение

Хорошо, я предполагаю, что ваш настоящий Цель состоит в том, чтобы сделать ваш код так быстро, как можно быстрее, верно?

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

Посмотрите, как ваша программа работает, она прослеживает дерево вызовов, которое вроде как настоящее дерево за пределами вашего окна. Багажник как main Функция, и где любая ветвь расщепляется от него, как называя другая функция.

Предположим, каждый «лист» требует определенного количества времени, а что вы хотите сделать, это обрезать дерево чтобы удалить как можно больше листьев.

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

Один простой способ сделать это, состоит в том, чтобы выбрать несколько листьев наугадными, как 10, и на каждом, следите за линией вниз по своей ветке назад назад к багажнику. Любая ветвь будет иметь некоторое количество этих линий, проходящих через него, от листа к багажнике. Чем больше строк проходит через эту ветвь, тем больше листьев на этой ветке, и чем больше вы можете сохранить, обрезая его.

Вот как вы можете применить это в вашу программу. Чтобы попробовать лист, вы случайно приостановите программу и посмотрите на стек вызовов. Это линия обратно в багажник. Каждый Вызов сайта На нем (не функция, сайт вызова) является веткой. Если этот сайт вызова находится на некоторой доле образцов, как 40%, то это примерно то, сколько вы можете сохранить, обрезая его.

Итак, не думайте об этом как об измерении, как долго выполняют длительные функции. Подумайте об этом, как спрашивать, какие сайты звонков являются «тяжелыми». Это все, что есть к этому.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top