简单的Python代码运行时间异常长,被Hotsh错误报告

2024-09-20 23:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用hotshot优化一些代码,因为它是高性能的profiler等等,所以我希望它很好。但出于某种原因,我从中得到了非常不准确的结果。在我最近的评测运行中,hotshot报告了我调用的顶级函数的累计时间为7.946秒。但如果连时间都不算,我就知道要花更多的时间。只需使用时间。时间()给了我42.465秒的运行时间。我猜这是因为hotshot不计算系统IO时间或其他什么,而我的程序正在批处理大量二进制文件?在

但是,使用更多时间。时间()块我把大部分额外的时间使用(hotshot没有注意到)缩小到一个不做任何IO的低级处理函数。hotshot报告了这个函数所用的总时间和累计时间分别为4.414和6.185秒。但是,再次使用时间。时间()我发现它的累计时间超过30秒。在一个相对简单的代码块中花费的累计时间是7.32秒,比hotshot说的在整个函数中花费的时间还要长。块看起来像这样:

format = element[1]
if isinstance(format, tuple):
    format, operator, operand = format
else:
    operator, operand = (None, None)

就这样。这个街区已经跑了900多万次了,所以也许我不应该惊讶于花这么多时间在里面。但很明显这里根本就没人做。为什么hotshot如此低估这个函数(以及整个程序)所花费的时间?在

在你问之前,不,我没有使用多线程或类似的东西。在


Tags: 函数代码io程序noneformat报告时间
2条回答

你想知道所有的时间都在哪里,对吗? 别以为这是在测量时间。 可以把它看作是查找堆栈上大部分时间的代码行,而不管它们的总数。 Here's an example.

许多分析器都属于gprof traps,包括忽略阻塞的时间、认为代码行无关紧要、认为“自我时间”重要以及认为度量必须准确。在

{1},如果你正在使用Python},尝试切换。似乎hotshot不再是{a1}。在

相关问题 更多 >

    热门问题