欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

python 效率问题?

程序员文章站 2022-05-24 11:38:09
...
初学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带来的性能损失还是很小很小的