为什么cProfile只运行一次代码?

问题描述 投票:0回答:1

在反面,timeit通过代码1,000,000次,以与其他代码进行合理的渐近比较。 cProfile仅运行一次代码,结果中只有3个小数位(0.000),这不足以获取完整图片。

您会得到这样的无用结果:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
    1    0.000    0.000    0.000    0.000 <string>:1(<module>)
    1    0.000    0.000    0.000    0.000 a.py:27(function)
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
python profiling benchmarking timeit cprofile
1个回答
0
投票

timeit的目的是获得函数的吞吐量,这将始终需要代码运行多次才能淡出边缘情况并给出良好的平均值。

另一方面,cProfile用于对函数堆栈的每个子调用进行概要分析,以使函数内部发生的所有魔术变得神秘。

[timeit会告诉您必须进行一些优化,而cProfile会为您指出正确的方向,告诉您堆栈的哪一部分是微不足道的工作。”>

© www.soinside.com 2019 - 2024. All rights reserved.