【发布时间】:2010-12-28 08:46:35
【问题描述】:
我曾经使用内置于 System Monitor 应用程序中的一个不错的 Apple 分析器。只要您的 C++ 代码是使用调试信息编译的,您就可以对正在运行的应用程序进行采样,它会打印出一个缩进的树,告诉您父函数在此函数中花费的时间百分比(以及主体与其他函数调用) .
例如,如果main调用function_1和function_2,function_2调用function_3,然后main调用function_3:
main (100%, 1% in function body):
function_1 (9%, 9% in function body):
function_2 (90%, 85% in function body):
function_3 (100%, 100% in function body)
function_3 (1%, 1% in function body)
我会看到这个并想,“function_2 正文中的代码需要很长时间。如果我希望我的程序更快,那就应该从那里开始。”
我怎样才能最轻松地获得 Python 程序的准确分析输出?
我看到有人说要这样做:
import cProfile, pstats
prof = cProfile.Profile()
prof = prof.runctx("real_main(argv)", globals(), locals())
stats = pstats.Stats(prof)
stats.sort_stats("time") # Or cumulative
stats.print_stats(80) # 80 = how many to print
但与那个优雅的调用树相比,它相当混乱。如果您可以轻松做到这一点,请告诉我,这会有所帮助。
【问题讨论】: