0

我在 Python 中有以下示例:

import numpy as np
import timeit

# array size
m = 3000

# square array
a = np.random.rand(m, m)

# column vector
b = np.random.rand(m)

# solve
ti = timeit.default_timer()
x = np.linalg.solve(a, b)
tf = timeit.default_timer()

# solve function
def solver(a, b):
    x = np.linalg.solve(a, b)
    return x

tii = timeit.default_timer()
x = solver(a, b)
tff = timeit.default_timer()

print('time1 ', tf-ti)
print('time2 ', tff-tii)

不使用函数 (time1) 与使用函数 (time2) 的时间比较是:

time1  0.6199771239989786
time2  0.5945519460001378

两种方法之间似乎存在细微差别。函数的输入参数是如何处理的solver,它们是被复制的还是只是传递给函数的内部?

4

1 回答 1

1

速度差异可能是由于内容的一些内存缓存a以及b 第二次调用linalg.solve利用的。

为了回答这个问题,python 中的对象是通过引用传递的,因此传递参数成本的唯一区别是您在第二个示例中执行了两次。但这可能只是解决成本的一小部分。

于 2014-04-26T16:10:08.837 回答