为什么struct.pack在性能上有如此高的可变性?

时间:2015-03-30 16:32:28

标签: python performance struct

在测试struct.pack的性能时,我得到以下结果:

In [3]: %timeit pack('dddd', 1.0, 1.0, 1.0, 1.0)
The slowest run took 578.59 times longer than the fastest. This could
mean that an intermediate result is being cached 
1000000 loops, best of 3: 197 ns per loop

为什么最慢的运行速度慢578倍?包执行一些内部缓存,或者这是某种CPU级别缓存的结果,还是其他什么?

1 个答案:

答案 0 :(得分:1)

IPython探查器正在发布。结果确实被缓存(至少在一些python版本中)。例如,在python 2.7.6中,您可以找到定义cache_struct函数的相关代码here

此函数查找缓存以查看最近是否使用了给定格式并返回相关的Struct实例,而不是创建新实例(这看起来相对昂贵)。

您可以看到它在pack函数(和其他函数)中使用。


此内容已发布在评论中,但值得回答。