看板 Python 關於我們 聯絡資訊
※ 引述《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
yoco315:不知道為什麼這篇口氣好差.. 人家只是分享東西而已 10/31 08:34
huggie:看不出噓點在哪? 10/31 16:20
snowangel:不懂一樓在噓什麼+1... 10/31 20:48
Lucemia:一樓應該是噓錯 10/31 23:24
Tiberius:敢問能不能舉一些 vectorized code 加速的範例? XD 11/02 00:07
yungyuc:我的第一個噓 get! XD 11/02 18:35
yungyuc:python -m timeit -s "import numpy" # 第一行都一樣 11/02 18:40
yungyuc:"for d in numpy.arange(100,dtype=float): d**2" # loop 11/02 18:41
yungyuc:10000 loops, best of 3: 155 usec per loop 11/02 18:41
yungyuc:"numpy.arange(100,dtype=float)**2" # vector 11/02 18:42
yungyuc:100000 loops, best of 3: 7.43 usec per loop 11/02 18:42
yungyuc:雖然不知道 numpy 有沒有用到 SIMD (CPU vector) 11/02 18:43
yungyuc:但僅是把 loop 從 python 換進 numpy,就會差這麼多 11/02 18:44