Python与Java性能(运行速度)

55 投票
4 回答
135988 浏览
提问于 2025-04-15 23:59

可能重复的问题:
Python比Java/C#慢吗?

如果不考虑每种语言的特点,只专注于速度的话,哪种语言的性能更好呢?

你可能会觉得这个问题很简单,但我找不到一个靠谱的答案。

我知道某些操作在Python中可能更快,而在其他语言中可能又快一些,但我找不到详细的信息来说明这一点。有没有人能帮我解释一下这些性能差异?

4 个回答

13

其实没有一个明确的答案,因为Python和Java都是有很多不同实现方式的语言。比如,Python有很多版本,比如CPython、IronPython、Jython和PyPy,这些都是Python的不同实现。而Java也有很多版本,比如HotSpot虚拟机、Mac OS X的Java虚拟机、OpenJRE等等。Jython会生成Java字节码,所以它基本上是在使用相同的Java底层结构。CPython则有很多功能是直接用C语言实现的,所以它运行得非常快,但Java虚拟机也有很多功能是用C实现的。要想得出一个合理的结论,可能需要逐个功能进行测量,并在不同的解释器和虚拟机之间进行比较。

34

如果你不考虑这两种语言的特点,你怎么定义“速度”?你希望在你的测试中包含哪些特性,又想省略哪些特性呢?

比如说:

  • 当Java执行一个空循环比Python快的时候,这算不算速度?
  • 还是说Python在发现循环体是空的、循环头没有副作用时,会优化掉整个循环,这样反而更快?
  • 这算不算“语言的特点”?
  • 你想知道每种语言每秒能执行多少字节码吗?
  • 你想知道哪些?只想知道快的,还是所有的?
  • 你怎么计算Java虚拟机的JIT编译器,它在运行时把字节码转换成特定CPU的汇编代码?
  • 你会把代码编译的时间算进去吗?(在Java中是额外的,但在Python中总是包含的)

总结:你的问题没有答案,因为你没有明确你想要什么。即使你说得更清楚,这个问题可能也会变得很学术,因为你测量的东西在现实生活中并不重要。在我所有的项目中,Java和Python的速度一直都足够快。当然,在特定的问题和环境中,我会更倾向于选择其中一种语言。

84

Java比Python快。这一点很明显。

Python在很多方面都很受欢迎,但速度并不是它的强项。

参考资料

撰写回答