我有一個計算項目,大量使用日誌功能(整數),數十億次調用。我發現numpy的日誌表現出奇的慢。numpy的日誌功能會發生什麼?有沒有方法提高性能?
下面的代碼需要15至17秒來完成:
import numpy as np
import time
t1 = time.time()
for i in range(1,10000000):
np.log(i)
t2 = time.time()
print(t2 - t1)
然而,math.log函數取從3到4秒的時間少得多。
import math
import time
t1 = time.time()
for i in range(1,10000000):
math.log(i)
t2 = time.time()
print(t2 - t1)
我還測試了matlab和C#,它分別需要約2秒和0.3秒。
MATLAB
tic
for i = 1:10000000
log(i);
end
toc
C#
var t = DateTime.Now;
for (int i = 1; i < 10000000; ++i)
Math.Log(i);
Console.WriteLine((DateTime.Now - t).TotalSeconds);
是否有蟒蛇任何方式,我可以提高日誌功能的表現?
我對這個答案很感興趣。特別是因爲我剛進入源代碼,並且該函數很難追蹤。在源代碼的左邊,它寫着:'#真實簽名未知;從__doc__'恢復。任何人都可以解釋源代碼的工作原理嗎? –
答案似乎在這裏http://stackoverflow.com/questions/3650194/are-numpys-math-functions-faster-than-pythons?rq=1 – Bathsheba
'np.log'經過優化,適用於數組值,而不是單個值。例如'np.log(np.arange(1,10000000))'(該範圍內的整數數組的日誌)對我來說大約需要120ms。 –