는 파이썬에서 다음 예제를 가지고 :파이썬 함수가 입력 매개 변수를 함수에 복사합니까?
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)
함수 (TIME2)를 사용하여 대 기능 (시간 1)를 사용하지 않는 시간 비교는 다음과 같습니다
time1 0.6199771239989786
time2 0.5945519460001378
이 약간있는 것으로 보인다 두 접근법의 차이점. 입력 매개 변수는 함수 solver
에 대해 어떻게 처리 되었습니까? 아니면 복사 되었습니까? 아니면 함수의 내부로 전달 되었습니까?
반대 순서로 테스트를 실행하면 어떤 타이밍이 발생합니까? – AShelly
@AShelly 물론 흥미 롭습니다. 역순으로 테스트를 실행하면 – wigging
오 그래요. 추가 기능 호출 없이는 느려집니다 .-) 물론 첫 번째 호출 전에 수행 할 초기화가 있습니다. – Daniel