Java vs Python on Hadoop

2022-08-31 19:58:02

我正在使用Hadoop开发一个项目,它似乎原生地结合了Java并为Python提供流支持。选择一个而不是另一个是否会对性能产生重大影响?我在这个过程中足够早,如果一种方式或另一种方式存在显着的性能差异,我可以走任何一条路。


答案 1

使用Python,你可能会开发得更快,而使用Java肯定会运行得更快。

谷歌“benchmarksgame”,如果你想看到一些非常准确的速度比较所有流行的语言,但如果我没记错的话,你说的是3-5倍快。

也就是说,现在很少有东西是处理器绑定的,所以如果你觉得你会用Python开发得更好,那就试试吧!


在回复评论(Java怎么能比Python更快):

所有语言的处理方式都不同。Java大约是仅次于C和C++最快的(它可以比java快5倍,但似乎平均快2倍左右)。其余的则慢2-5倍以上。Python是仅次于Java的更快的Python之一。我猜C#和Java一样快,或者更快,但是bengetsgame只有Mono(这有点慢),因为它们不在Windows上运行它。

这些声明中的大多数都是基于计算机语言基准测试游戏,该游戏往往非常公平,因为每种语言的倡导者/专家都会调整用其特定语言编写的测试,以确保代码具有良好的针对性。

例如,显示了使用Java与c ++的所有测试,您可以看到速度范围从大约等于java慢3倍(第一列在1到3之间),Java使用更多的内存!

现在这个页面显示了java与python(从Python的角度来看)。因此,速度范围从python比Java慢2倍到慢174x,python通常在代码大小和内存使用方面击败Java。

这里另一个有趣的观点 - 分配大量内存的测试,Java实际上在内存大小方面也比Python表现得好得多。我很确定java通常会因为VM的开销而丢失内存,但是一旦考虑到这一点,java可能比大多数(同样,除了C)更有效。

顺便说一句,这是Python 3,另一个测试的Python平台(简称Python)的公平性要差得多。

如果你真的想知道它是如何更快的,VM 是非常智能的。它在运行代码后编译为机器语言,因此它知道最可能的代码路径是什么并针对它们进行优化。内存分配是一门艺术 - 在OO语言中非常有用。它可以执行一些非VM语言无法做到的惊人的运行时优化。当被迫运行时,它可以在相当小的内存占用空间内运行,并且是嵌入式设备以及C / C++的首选语言。

我为安捷伦(Agilent)开发了一个信号分析仪(想想昂贵的o-scope),其中几乎整个事情(除了采样)都是用Java完成的。这包括绘制包含跟踪 (AWT) 的屏幕以及与控件交互。

目前,我正在为所有未来的有线电视盒做一个项目。该指南以及大多数其他应用程序将用Java编写。

为什么它不比Python快?


答案 2

Java的动态性不如Python,并且在其VM中投入了更多的精力,使其成为一种更快的语言。Python也受到其全局解释器锁的阻碍,这意味着它不能将单个进程的线程推送到不同的内核上。

这是否会产生任何重大差异取决于您打算做什么。我怀疑这两种语言都适合你。