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