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

2つのアプローチにはわずかな違いがあるようです。関数の入力パラメータはどのように処理されますsolverか、コピーされますか、それとも単に関数の内部に渡されますか?

4

1 に答える 1

1

速度の違いは、 の内容の一部のメモリ キャッシュが原因である可能性が高くab の 2 番目の呼び出しがそれlinalg.solveを利用します。

質問に答えるために、Python のオブジェクトは参照によって渡されるため、引数を渡すコストの唯一の違いは、2 番目の例で 2 回行っていることです。しかし、それはおそらく解決コストのほんの一部です。

于 2014-04-26T16:10:08.837 に答える