gpt4 book ai didi

Python,更快地使用类属性或函数中的变量?

转载 作者:行者123 更新时间:2023-11-28 20:23:36 26 4
gpt4 key购买 nike

在 Python 中,理论上,test1test2 中哪个方法应该更快(假设 x 的值相同)。我尝试过使用 %timeit,但发现差别很小。

import numpy as np

class Tester():

def __init__(self):
self.x = np.arange(100000)

def test1(self):
return np.sum(self.x * self.x )

def test2(self,x):
return np.sum(x*x)

最佳答案

在 Python 的任何实现中,时间将绝大多数被两个向量相乘,每个向量包含 100,000 个元素。与此相比,其他一切都是噪音。如果您真的对测量其他开销感兴趣,请使向量更小。

在 CPython 中,test2() 很可能会快一点。它有一个“额外”参数,但参数是“以 C 速度”解压的,所以这无关紧要。参数的访问方式与局部变量相同,通过 LOAD_FAST 操作码,这是一个简单的 array[index] 访问。

test1() 中,self.x 的每个实例都会导致在字典 self.__dict__ 中查找字符串“x” >。这比索引数组访问慢。但是和冗长的乘法所花费的时间相比,基本不算什么。

关于Python,更快地使用类属性或函数中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758399/

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