1. ホーム
  2. java

[解決済み] Javaと比較してJavascriptはどれくらい速いのか?[クローズド]

2023-07-31 08:45:35

質問

JavascriptとJavaのパフォーマンスを比較するテストはありますか?

UPDATE: 誰もがなぜこの質問なのかと聞いているので、ここにいくつかのコンテキストがあります :)

皆さんもご存知のように(だといいのですが)、最近のJavascriptはウェブクライアントだけでなく、node.jsによってウェブサーバーにも存在するようになりました。

また、appceleratorやphonegapを使えば、携帯電話やデスクトップでも動作させることができます。

また、デスクトップアプリケーションのようにユーザー体験を一流にするために、実質的にウェブブラウザで使用することができます。

しかし、Javaはウェブクライアントや携帯電話上でアプレットを実行することで、これらのことも可能でした。また、バックエンドのための言語でもあり、多くのフレームワークの中から選択することができます。

これらのそれぞれが、前述の領域でほとんど/完全に他のものを置き換えることができるので、私が説明したすべてのケースについて、それらの間のパフォーマンスの違いを知りたいのです。

  • クライアント。Java アプレットと Javascript の比較
  • サーバー Node.js + ExpressによるJava EEとJavascriptの比較
  • 携帯電話 Java MEとPhonegap/AppceleratorによるJavascriptの比較
  • デスクトップ Java SEとPhonegap/Appceleratorを使用したJavascriptの比較

文脈がより明確になったかと思います。

どのように解決するのですか?

JavaとJavaScriptは、どちらもプログラミング言語です。プログラミング言語は、抽象的な数学的ルールの束に過ぎません。プログラミング言語は速くない。遅いわけでもない。それらはただ です。 .

アプリケーションの性能は、言語とは関係ありません。最も重要なのは、アプリケーションのアーキテクチャです。次にアルゴリズムの効率です。次にマイクロ最適化。そして、コンパイラやインタプリタの品質。そしてCPU。その間にいくつかの段階がある。しかし、言語は直接的には関係ない。(もちろん、ベンチマークについて話しているのであれば、特定のベンチマークも重要ですし、ベンチマークがどれだけうまく実装されているか、どれだけうまく実行されているか、ベンチマークを実行する人が実際に を知っているか ベンチマークを実行する人が実際にベンチマークについて知っているかどうか、さらに重要なのは統計です。また 正確な の定義も必要です。 という意味です。 は、ベンチマークに大きな影響を与える可能性があるため、かなり重要です)。

しかし、言語は間接的に役割を果たすかもしれません。10 行の非常に表現力の高い、明確で簡潔な、読みやすく、十分にファクタリングされた、分離した高レベルの Lisp コードでは、100 行のもつれた低レベル C よりもパフォーマンスのボトルネックを発見し修正することがはるかに容易です (これら 2 つの言語は単なる例であることに留意してください。この2つの言語はあくまで例であり、どれか1つの言語を特別視しているわけではありません)。例えばTwitterは、Rubyよりも表現力の乏しい言語では、スケーラビリティの問題を解決するために、これほど短期間にアーキテクチャを根本的に変更することはできなかっただろうと述べている。そして、Node.jsがあれだけイベントI/Oのパフォーマンスを発揮できるのは、JavaScriptの標準ライブラリがあまりにしょぼいからです。(そのため、Node.jsはすべてのI/Oを自分で用意しなければならないので、一からイベントI/Oに最適化することができるのです」(同)。例えばRubyやPythonは、Node.jsと同じように動作するイベント付きI/Oライブラリがあり、ずっと成熟しています...が、RubyやPythonにはすでにI/Oライブラリを含む大規模な標準ライブラリがあり、それらはすべて同期式でイベント付きライブラリとはうまく行きません。JavaScriptにはI/Oライブラリがないので、イベント付きI/Oとうまくいかないという問題はありません。 まったく .)

しかし、もしあなたが 本当に を比較したいのであれば、ここに興味深いデータポイントがあります。HotSpotは、より人気のある、そしてよりパフォーマンスの高いJVM実装の1つで、Lars Bakという人を含む男たちのチームによって作られました。しかし、実はHotSpotは何もないところから現れたわけではなく、Anamorphic Smalltalk VMのソースコードを基にしていました。

V8 は、より人気のある、そしてよりパフォーマンスの高い JavaScript 実装の 1 つで、Lars Bak という人物を含むチームによって作成されました。V8 は Anamorphic Smalltalk VM のソースコードを基にしており、そのソースコードは Lars Bak という人物を含むチームによって作成されました。

この 2 つが多かれ少なかれ同じであることを考えると、同じようなパフォーマンスを期待することができます。唯一の違いは、HotSpot には 100 人以上のエンジニアが 15 年間取り組んできたのに対し、V8 には 5 年未満のエンジニアが数人いることです。
それは
だけ であり、パフォーマンスの違いです。静的型付けと動的型付けの問題ではありません (Java しかし、ほとんどの JVM と HotSpot は静的最適化を一切行わず、すべての最適化は純粋に動的です)、コンパイルと解釈(HotSpot は実際には追加の JIT コンパイラで解釈しますが、V8 は純粋にコンパイルします)、ハイレベルとローレベルの違いではありません。それは純粋にお金の問題です。

しかし、Java と JavaScript の実装のペアで、Java の実装がより速い場合、JavaScript の実装がより速い別のペアを見つけることができることに賭けるつもりです。また、私はおそらく を保つことができます。 を維持したまま、別のベンチマークを使用することもできます。そこには 理由 Computer Languages Benchmark Game を「ゲーム」と呼ぶのには理由があります。 を推奨しています。 と呼び、ベンチマークを弄って任意の言語を上位にすることを自身のページで推奨しています。