Re: [閒聊] 人急造反,狗急跳牆

看板Python作者 (酷狗喵千代)時間17年前 (2007/10/30 03:40), 編輯推噓3(418)
留言13則, 6人參與, 最新討論串5/5 (看更多)
※ 引述《Lucemia (生の直感、死の予感)》之銘言: : 我喜好去選擇寫幾個好用的固定function (也許看起來難懂) : 但能讓整體的coding style變的更簡單易懂,也減少coding 時發生的錯誤。 還有另一種狀況也會不得不寫難懂的碼。 Python 的迴圈令人絕望地慢。當然,這是和 C/Fortran code 來比。 幸好有 numpy 出現,讓 Python 也有了夠快的數值分析操作。 不過為了讓 Python/numpy 寫出來的程式夠快, 除了得放手讓 numpy 浪費一堆記憶體之外,還得寫 vectorized code。 vectorizd code 和迴圈版相比難懂得多,但沒有辦法。 因為 Python 的 function call 很貴,所以這種碼還得出現一大堆, 不能包在 function 裡面。 說到底,程式語言究竟只是解決問題的方法。 漂亮的語言提供比較好的手段來解決問題,不過, 如果一心害拍把手弄髒,很多問題就解決不了了。 為了能在同一個 script 檔裡同時進行模擬、分析和畫圖, 我願意忍受一下 vectorized code 的不便, 換來不必 explicitly compile external module 和 不必 call external plot program 的方便 (茶 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 164.107.239.65

10/31 08:34, , 1F
不知道為什麼這篇口氣好差.. 人家只是分享東西而已
10/31 08:34, 1F

10/31 16:20, , 2F
看不出噓點在哪?
10/31 16:20, 2F

10/31 20:48, , 3F
不懂一樓在噓什麼+1...
10/31 20:48, 3F

10/31 23:24, , 4F
一樓應該是噓錯
10/31 23:24, 4F

11/02 00:07, , 5F
敢問能不能舉一些 vectorized code 加速的範例? XD
11/02 00:07, 5F

11/02 18:35, , 6F
我的第一個噓 get! XD
11/02 18:35, 6F

11/02 18:40, , 7F
python -m timeit -s "import numpy" # 第一行都一樣
11/02 18:40, 7F

11/02 18:41, , 8F
"for d in numpy.arange(100,dtype=float): d**2" # loop
11/02 18:41, 8F

11/02 18:41, , 9F
10000 loops, best of 3: 155 usec per loop
11/02 18:41, 9F

11/02 18:42, , 10F
"numpy.arange(100,dtype=float)**2" # vector
11/02 18:42, 10F

11/02 18:42, , 11F
100000 loops, best of 3: 7.43 usec per loop
11/02 18:42, 11F

11/02 18:43, , 12F
雖然不知道 numpy 有沒有用到 SIMD (CPU vector)
11/02 18:43, 12F

11/02 18:44, , 13F
但僅是把 loop 從 python 換進 numpy,就會差這麼多
11/02 18:44, 13F
文章代碼(AID): #179ZS-wu (Python)
文章代碼(AID): #179ZS-wu (Python)