Python 板


LINE

※ 引述《yoco315 (眠月)》之銘言: : ※ 引述《Jobaba (下雨了)》之銘言: : : 感覺時間差好多喔.. : : 不知道大家覺得為何會差那麼多呢... : Python 本來就是這麼慢的 : 你看一下 Python 的 Extending and Embedding : 看看 Python 底層是怎麼用 C 實作的 : http://docs.python.org/ext/ext.html : 看完就知道會這麼慢是很正常的 其實還好... python 包變數包得的確很沒有空間效率, 但是你是否有注意到大多數的 special member function 都在 type object 裡面有獨立的 entry? (也就是說它們的 binding 不需要 look up) 其實主要會慢還是慢在它的 VM 上面... 這邊稍微提一下 python 的程式是怎麼執行的, 當一支 python module 被讀進記憶體的時候, 它會先被 compile 成 bytecode, 也就是你在 .pyc 裡面看見的東西, 而執行的時候則是用一台 virtual machine 一個一個指令讀進來模擬, 而這是非常沒有效率的. 你可能會想問那為什麼其他的 bytecode virtual machine 沒有那麼慢, 比方說 java 或是 c# 都比 python 快上許多, 甚至 java 的執行效率直逼 native program? 那是因為它們有利用到 JIT(just-in-time compilation) 的技術, 每當執行到一段 bytecode 時, virtual machine 會先把它翻譯成 native code 執行, 而當以後再執行到同一段 bytecode 時, 翻譯的動作就可以省去. python 內建是沒有這樣的機制的, 但我下一段會介紹一個替代品. : 所以 Python 的效能關鍵部分才要用 C 寫的 Module 包裝起來 : 不然用直接在 Python 層次 codding 的話肯定會跑到哭 其實 python 寫得有技巧的話也可以很有效率... 比方說如果你知道 python list 其實就是 array 的話, 你那就不會常常寫 somelist.pop(0) 這樣的東西出來. 至於 bytecode 跑得慢的問題, 其實是有解的: http://psyco.sourceforge.net/ 這支 python module 很有意思, 它所實作的就是 JIT 的功能, 而且它是可以手動調整 profiling 的, 你可以自由設定某些較常執行的 function 才 optimize. --- 另外一個我很看好的東西是這個: http://codespeak.net/pypy/ 這玩意兒將可能是下一代的 python interpreter, 它最大的特色就是它整隻程式都是 python 寫的, 完全脫去了跟其他語言的牽連. 但是這樣會造成一個問題, 就是我們總得有一個 native 的 interpreter, 而 pypy 裡面有個叫 translator 的 module, 它的功能是把 python 的程式轉譯成較低階的語言, 比方說 C 或 LLVM 甚至是組語, 之後便可以再用別的 compiler 把它編譯成 native code. (LLVM 是一種適合 optimize 的語言, 主要用於 compiler 內部表示) translator 有趣的地方在於雖然 python 是一個 weak typing 的語言, 然而事實上正常的 python 程式大多數變數都還是只會擁有單一型別, 它能夠分析程式的 control flow 來進行 compile-time binding, 最後產生出來的 code 則有可能跟其他 strong typing 的語言同樣有效率. 這玩意兒等到實用化了, 我恐怕真的會把精熟的 C++ 忘光完全倒向 python 吧. -- その乾いた哀愁の瞳に去來するものは何か? 失ったもの 得たもの そして廣大なネットの狹間で彼が見たものとは? 虛像と實存と記號の中に彼は今、何を想うのか? <バトルプログラマーシラセ> --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.224.64
1F:推 Jobaba:感謝各位的回答, 我剛入新手, 還要多多看一些文件 :) 02/18 10:14
2F:→ Jobaba: 才是 02/18 10:18
3F:推 yoco315:好文章按個好 @@ 02/18 12:58
4F:推 wawawa:我本來以為python速度比java快說~.~看來是我搞錯了 02/18 23:06
5F:→ wawawa:希望新一代的interpreter趕快誕生吧^_^ 02/18 23:07







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP