Понимание результатов профилировщика Pycharm и результатов cProfile и того, как получить более подробную информацию о стандартных функциях библиотеки - PullRequest
0 голосов
/ 10 января 2019

Я работаю над сокращением времени выполнения программы, на которую я произвел рефакторинг, и у меня возникают проблемы с пониманием вывода профилировщика в PyCharm и того, как он соотносится с выводом, который я получу, если я запущу cProfile напрямую. (Мой вывод показан ниже, с двумя интересными линиями, которые я хочу убедиться, что я правильно понял, прежде чем пытаться исправить.) В частности, что представляют столбцы Время и Собственное время? Я предполагаю, что Own Time - это время, затрачиваемое функцией, за вычетом времени любых других вызовов, выполненных внутри этой функции, а time - это общее время, потраченное на каждую функцию (т. Е. Они просто переименованы соответственно в totaltime и cumtime), но я могу не найти ничего, что четко документирует.

Кроме того, что я могу сделать, чтобы найти больше информации об особо дорогостоящей функции, используя профилировщик PyCharm или ванильный cProfile? Например, _strptime, кажется, стоит мне много времени, но я знаю, что он используется в четырех различных функциях в моем коде. Я хотел бы увидеть разбивку того, как эти 2 миллиона вызовов распределены по моим различным функциям. Я предполагаю, что в функции calc_near_geo_size_and_latency есть непропорциональное число, но я хотел бы получить еще одно доказательство, прежде чем я переписываю код. (Я понимаю, что мог бы просто профилировать функции по отдельности и сравнивать, но я надеюсь на что-то более краткое.)

Я использую Python 3.6 и PyCharm Professional 2018.3.

Part of the output of profiling the program

...