5

言語ベンチマークによると、JavaScript V8は、regex-dnaプログラムで他のプログラミング言語よりも高速です。では、なぜnode.jsアプリケーション(つまりhttpサーバー)はCアプリケーション(つまりNginx、Lighttpd)よりも高速ではないのでしょうか。

4

5 に答える 5

33

V8アプリケーションはjavascriptアプリケーションだからです。javascriptが最終的にマシンコードにコンパイルされたとしても、実行時の特性は異なります。

たとえば、オブジェクトで関数を呼び出し、そのオブジェクトが関数を定義していない場合、ランタイムはプロトタイプ階層をトラバースして関数を見つける必要があります。この階層は、プログラムの存続期間中いつでも変更できます。実行できる巧妙な最適化がありますが、それでもオーバーヘッドは存在します。

メモリモデルもあります。Javascriptはガベージコレクションされ、GCはCPUサイクルを取ります。

于 2010-11-18T23:03:06.130 に答える
11

httpリクエストの処理は、regex-dnaとは別の問題であるためです。

あるタスクでAがBよりも速いという事実は、他のタスクから何を期待するかについては何も言いません。

義務的な悪い車の例え:ハムサンドイッチはポルシェよりもはるかにおいしいです。なぜ0から60まで速くならないのですか?

于 2010-11-18T22:40:12.980 に答える
3

1つのCは、本質的に計算速度のベンチマーク言語です。最近のコンパイラは非常に優れており、非常に効率的なマシンコードを生成します。これが意味するのは、パフォーマンスの上限はCで得られるものであるということです。

node.jsに関する彼のプレゼンテーションの1つで、Ryan Dahl(作成者)、ノードはCとほぼ同じくらい高速であると述べました(ただし、V8が適切に最適化するには時間が必要であることは言うまでもなく、GCやその他のものはパフォーマンスに影響を与えます)

于 2010-11-19T06:18:54.043 に答える
0

そのベンチマークには15の異なるプログラムがあり、JavaScriptV8がより高速であることがわかるdna-regexベンチマークは1つだけです。他のベンチマークでは、JavaScriptのパフォーマンスははるかに低くなります。あなたは最初の選択でプログラムを選ぶことができます、これを見てください。

于 2014-03-17T12:57:16.827 に答える
-5

言語ベンチマークによると、JavaScriptV8はバイナリツリープログラムでGCCよりも高速ではありません。

言語ベンチマークによると、JavaScriptV8はkヌクレオチドプログラムでGCCより高速ではありません。

言語ベンチマークによると、JavaScriptV8はn-bodyプログラムでGCCより高速ではありません。

言語ベンチマークによると、JavaScriptV8はスペクトルノルムプログラムでGCCより高速ではありません。

言語ベンチマークによると、JavaScriptV8はfastaプログラムでGCCより高速ではありません。

言語ベンチマークによると、JavaScriptV8は逆補完プログラムでGCCより高速ではありません。

言語ベンチマークによると、JavaScriptV8はpidigitsプログラムでGCCより高速ではありません。

于 2010-11-19T17:18:14.743 に答える