gpt4 book ai didi

python struct pack加速内部函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:21 24 4
gpt4 key购买 nike

我正在测试 python 的 struct pack/unpack 性能并注意到如果将其放入一个函数中它会加速:

import time
import struct
from io import BytesIO

def pack(b):
for i in range(10000000):
b.write(struct.pack('!i', i))

b = BytesIO()
start = time.time()
pack(b)
end = time.time()
print(end - start)

b2 = BytesIO()
start = time.time()
for i in range(10000000):
b2.write(struct.pack('!i', i))
end = time.time()
print(end - start)

运行这个给出

2.639040946960449
3.0683419704437256

代码相同,功能更快。

这是为什么?

最佳答案

函数内部的循环比全局级别的相同循环更快:

from timeit import default_timer as timer

N = 10000000

def f():
for i in range(N):
pass

start = timer()
for i in range(N):
pass
print("global %.2f" % (timer() - start,))

start = timer()
f()
print("function %.2f" % (timer() - start,))

输出:

global 0.71
function 0.40

这可能是因为 CPython 中全局和本地命名空间访问速度的差异。

关于python struct pack加速内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com