作者yungyuc (酷狗喵千代)
看板Python
标题Re: [闲聊] 人急造反,狗急跳墙
时间Tue Oct 30 03:40:45 2007
※ 引述《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
1F:嘘 yoco315:不知道为什麽这篇口气好差.. 人家只是分享东西而已 10/31 08:34
2F:推 huggie:看不出嘘点在哪? 10/31 16:20
3F:推 snowangel:不懂一楼在嘘什麽+1... 10/31 20:48
4F:推 Lucemia:一楼应该是嘘错 10/31 23:24
5F:推 Tiberius:敢问能不能举一些 vectorized code 加速的范例? XD 11/02 00:07
6F:→ yungyuc:我的第一个嘘 get! XD 11/02 18:35
7F:→ yungyuc:python -m timeit -s "import numpy" # 第一行都一样 11/02 18:40
8F:→ yungyuc:"for d in numpy.arange(100,dtype=float): d**2" # loop 11/02 18:41
9F:→ yungyuc:10000 loops, best of 3: 155 usec per loop 11/02 18:41
10F:→ yungyuc:"numpy.arange(100,dtype=float)**2" # vector 11/02 18:42
11F:→ yungyuc:100000 loops, best of 3: 7.43 usec per loop 11/02 18:42
12F:→ yungyuc:虽然不知道 numpy 有没有用到 SIMD (CPU vector) 11/02 18:43
13F:→ yungyuc:但仅是把 loop 从 python 换进 numpy,就会差这麽多 11/02 18:44