[解決済み] Javaと比較してJavascriptはどれくらい速いのか?[クローズド]
質問
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 を「ゲーム」と呼ぶのには理由があります。 を推奨しています。 と呼び、ベンチマークを弄って任意の言語を上位にすることを自身のページで推奨しています。
関連
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
Javaジェネリックを1つの記事で
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題