gpt4 book ai didi

python - 如何使字典乘法更快?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:08 25 4
gpt4 key购买 nike

有没有办法让函数 f() 更快。我运行了数亿次,所以任何速度的提高都会受到赞赏。字典 ab 的 ID 在运行中是相同的,w 是一个常量。键是整数; key 通常分布不均。

此外,函数在类对象中。所以f就是f(self),变量是self.w、self.ID、self.a、self.b

w = 10.25
ID = range(10)
a = {}
b = {}

for i in ID:
a[i] = random.uniform(0,1)
b[i] = random.uniform(0,1)

def f():
for i in ID:
a[i] = b[i] * w

t0 = time.time()
for i in xrange(1000000):
f()
t1 = time.time()
print t1-t0

最佳答案

您可以通过在 f() 中本地化变量来获得很好的加速:

def f(ID=ID, a=a, b=b, w=w):
for i in ID:
a[i] = b[i] * w

有些人不喜欢以这种方式进行本地化,因此您还可以构建一个闭包来加快全局变量访问速度:

def make_f(a, b, w, ID):
def f():
for i in ID:
a[i] = b[i] * w
return f

f = make_f(a, b, w, ID)

参见 this analysis哪种类型的变量访问最快。

从算法上讲,没有太多可以做的。 ID 的循环很快,因为它只是增加现有整数的引用计数。整数的散列实际上是即时的,因为 int 的散列是 int 本身。字典查找本身已经高度优化。同样,乘以常数也没有捷径。

关于python - 如何使字典乘法更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43533349/

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