初学python,以前搞过java和cpp。早就知道解释型的脚本语言肯定不快。但心存疑惑python和php,js,ruby等类型的语言,单从运行效率上来讲哪个更快一些?另外,python也能像java一样编译成字节码,是不是速度会提升很多?python能编译成机器码吗?回复内容:
python是慢,但是慢在特定的场景,两个最主要的: 1,全局执行锁gil所以无法用多核 2,所有东西都是对象且内部实现导致计算慢。如果你想写cpu密集的程序,建议别用py,如果是io密集的程序,pyhton毫无问题。ps:1,除非明确业务场景,否则干讨论效率问题没意义,实际上,开发的绝大部分时候,效率永远不是第一位的问题2,就算效率是问题,那绝大部份时候也不是语言问题3,就算是语言问题,综合衡量成本等各方面因素,绝大部份时候换语言也不是最好的选择
“快”和”慢”都是看场景的java 也有比 python 慢的地方, 例如做大矩阵运算没有 numpy 效率高, 启动很慢等
python效率比java差很多,而且有了hhvm以后,php的效率都比python高了。所以建议在性能要求比较高的场合不要用python。=============== 以下吐槽 ==================性能要求要多高才算高呢?如果是做网站的话,至少注册用户和pv要超过知乎或者豆瓣。昨天看见一个注册用户只有一千多的网站在讨论性能问题。
先说说字节码。python编译成字节码几乎不会变快。python的执行过程是,先编译你的代码到字节码,然后虚拟机加载字节码执行。因此提前编译到字节码只能省一点编译时间,大部分时候这点时间都可以忽略。就官方实现来说,python效率要比ruby高(php和js不太了解),但高的有限。如果真想用python追求效率,可以试试pypy,这个带jit的实现有些时候速度和c有一拼(当然jit能提速多少还得看应用场景)另外,对于性能瓶颈不在计算速度的程序来说,python带来的性能损失还是很小很小的