我有一个我正在分析的小片段,但list comprehension
被列为通话中的一个项目
import fileinput
import cProfile
pr = cProfile.Profile()
pr.enable()
x = [float(i) for i in range(0, 10**8)]
pr.disable()
pr.print_stats(sort='time')
输出:
2 function calls in 19.769 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 19.769 19.769 19.769 19.769 sandboxMinimalCProfile.py:6(<listcomp>)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
是否有可能获得转换为float
的成本?
答案 0 :(得分:1)
这里的问题是float
是内置的,因此它们不算作对探查器的调用。
你可以尝试解决它;但是,在任何情况下,分析器都不是为微基准设计的。相反,请尝试timeit
standard module:
$ python3 -m timeit 'float(1000000)'
10000000 loops, best of 3: 0.118 usec per loop