質問

私はプロジェクトに取り組んでいHadoopを用いるようになったようにネイティブをJavaをストリーミング支援のためのブランド、。である重要なパフォーマンスへの影響選びには格別のこだわりを持つのですか?私は早ければ早いほどの過程でどちらの方向にも行きがある場合は顕著なパフォーマンスの違いうのである。

役に立ちましたか?

解決

Javaは、Pythonのより少ない動的であり、より多くの努力が、それより早く言語作り、そのVMに置かれています。 Pythonはまた、異なるコア上に単一プロセスのスレッドをプッシュすることはできませんを意味し、そのグローバルインタープリタロックによってバック開催されます。

これは重大な違いがかどうかは、あなたがするつもりかに依存します。私は両方の言語があなたのために働くだろうと思う。

他のヒント

は、Pythonを使用すると、おそらくより速く開発しますとJavaで間違いなく高速で実行されます。

Googleの「benchmarksgame」あなたはすべての一般的な言語の間にいくつかの非常に正確な速度の比較を見てみたいが、私が正しくリコール場合は、話をしている場合についての3〜5倍速くます。

、いくつかのことは、あなたは、Pythonとのより良い開発したいように感じるので、もしプロセッサは、これらの日を拘束されていることであります!言った。

<時間>

コメントに返信(どのようにJavaのは、Pythonよりも高速になります)でます:

すべての言語が異なる方法で処理されます。 JavaはC&C ++の後最速についてです(javaのよりも高速を5倍するなど高速またはアップすることができたが、周りの2倍高速化を平均化するようです)。残りは2-5 +倍遅いからです。 PythonはJavaの後の速いものの一つです。私はC#は程度の速Javaなどまたは多分より高速であることを推測しているが、彼らは、Windows上でそれを実行していないので、benchmarksgameは(少し遅かった)モノを持っています。

これらの主張のほとんどは、かなり公平である傾向があるコンピュータ言語のベンチマークゲームに基づいています各言語で/専門家の支持者がコードを確保するために彼らの特定の言語で書かれたテストを微調整するので、よく標的にされています。

例えば、このには、すべてのテストを示していますC対ジャワで++とは、Javaに等しいが3倍遅くなることについての速度範囲を見ることができます(最初の列は、1との間にある3)、およびJavaは、多くのメモリを使用しています!

今すぐこのページは、視点からのpython対javaの(示していパイソンの)。速度が遅く174xには、Javaよりも2倍も遅いことのpythonから及ぶので、Pythonは一般的にかかわらず、コードサイズとメモリ使用量でJavaを打つます。

ここでもう一つの興味深い点 - 多くのメモリを割り当てられたテストでは、Javaは、実際に同様のメモリサイズにはPythonよりも有意に良好に行わ。私は、javaは通常ので、VMのオーバーヘッドの記憶を失い、それが出要因たら、Javaは(Cさんを除いて、再び)おそらく最もよりも効率的であるかなり確信しています。

これは仕方によってはPython 3である、(ジャストパイソンと呼ばれる)は、試験した他のPythonのプラットフォームははるかに悪い整形ます。

あなたが本当に知りたいと思った場合は、のそれが高速であるか、VMは驚くほどインテリジェントです。これは、コードを実行した後に機械語にコンパイルするので、それが最も可能性の高いコードパスが何であるかを知っているし、彼らのために最適化します。メモリの割り当ては芸術である - オブジェクト指向言語では本当に便利。それは何の非VMの言語が行うことができますいくつかの素晴らしい実行時の最適化を行うことができます。それはに強制するとき、かなり小さなメモリフットプリントで実行され、C / C ++と一緒に組み込みデバイスのための選択した言語であることができます。

私は、ほぼ(脇サンプリングから)全体の事はJavaで行われたアジレントのためのシグナルアナライザ(高価なO-範囲を考える)に取り組みました。このトレース(AWT)を含む画面を描画し、コントロールとの相互作用が含まれる。

現在、私は将来のすべてのケーブルボックスのためのプロジェクトに取り組んでいます。ほとんどの他のアプリと一緒にガイドは、Javaで書かれます。

なぜそれは、Pythonよりも速いのではないでしょうか?

まHadoopのmapreduceの変換は、"ストリーミング"として"カスタムjar".ご利用の場合、ストリーミングができますコードを他の言語でのように、Python、C++.コードだけからの読み込みSTDINへの出力を標準出力に出力します。しかし、hadoopのバージョンの前に0.21、hadoopストリーミング使用のみをストリームにテキストはバイナリ-をプロセス。そのためのファイルの必要があるテキストファイルの場合を除き、いくつかのファンキーエンコード変換ます。今で表示される パッチ が追加されている利用が可能になりましたのバイナリ形式とhadoopのパーソナルコンピュータ

ご利用の場合は、"カスタムjar"(書きおmapreduceコードをJavaやスカーラを使用hadoop図書館のようにして実行してください機能へのアクセスできる入出力をバイナリ(serializeバイナリ)からストリーミングプロセスと保存の結果をディスク).将来の運転をより速いによってもバイナリ形式は以下のテキスト形式)になります。

なおhadoopの仕事をするI/O結合は、"カスタムjar"アプローチがなくなります(以降のJavaの双方では、一層スピードアップし、前回のポスターの表示からの読み出しディスクもできます。

でください自分をどのような貴重なお時間を。私がより生産性のpython、地図-削減を読み取るSTDIN、書き込み、標準出力に出力が本当に簡単です。なので私が個人的にお勧めのpythonのルートしていてもフィギュアをバイナリエンコードも出します。以来、hadoop0.21取り扱う非utf8バイト配列とがありますのでバイナリ(バイト配列)の代替利用のためのpython(http://dumbotics.com/2009/02/24/hadoop-1722-and-typed-bytes/で表示するpythonコードのみの約25%に比べて遅"カスタムjar"javaコード、支払も、全部エクスペディアにpythonのルート

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top