Hadoop 上的 Java 与 Python

标签 java python hadoop

我正在开发一个使用 Hadoop 的项目,它似乎本身就包含 Java 并为 Python 提供流式支持。选择其中一个是否会对性能产生重大影响?我在这个过程中已经足够早了,如果一种或另一种方式存在显着的性能差异,我可以采取任何一种方式。

最佳答案

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

如果您想查看所有流行语言之间的一些非常准确的速度比较,请谷歌“基准游戏”,但如果我没记错的话,您所说的速度要快 3-5 倍。

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


回复评论(java怎么能比Python快):

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

这些声明大部分基于 computer language benchmarks game这往往是相当公平的,因为每种语言的倡导者/专家都会调整以他们的特定语言编写的测试,以确保代码具有针对性。

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

现在 this page显示了 java vs python(从 Python 的角度来看)。因此速度范围从 python 比 Java 慢 2 倍到 174 倍不等,不过 python 在代码大小和内存使用方面通常优于 java。

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

顺便说一下,这是 Python 3,测试过的其他 Python 平台(只是称为 Python)的表现要差得多。

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

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

目前我正在为所有 future 的有线电视盒开发一个项目。该指南以及大多数其他应用程序都将使用 Java 编写。

为什么它不会比 Python 更快?

关于Hadoop 上的 Java 与 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482282/

相关文章:

java - 错误 : java/lang/NoClassDefFoundError: java/lang/Object

python - Selenium Firefox webdriver 导致错误 : Service geckodriver unexpectedly exited. 状态代码为:2

python - 我如何使用try&检查所有异常,但在python 2.7中没有pep8警告时除外?

linux - hive 脚本(hivequery.hql)文件中的这个符号是什么意思 "use ${word:word}"

java - Boost unordered_map 是否仅适用于将项目与整数相关联?

java - JOOQ - 将 fetchOne().into() 转换为 fetchValue(query)

java - Servlet 的 NullPointerException

python - 选择具有最大值的条目并删除指定日期的其他条目

hadoop - 在 MapReduce 作业中增加 ZooKeeper 协商超时

java - Hadoop-执行多 map 作业