2012-04-21 13 views
2

最近、Node.jsとClojureのベンチマークであるthisthisthisのような多くのベンチマークに悩まされました。 Rubyのような言語に比べて、Node.jsとClojureのどちらもほぼ同等に高速です(これはもっと速いことを意味します)。ClojureとNode.jsのRAM消費量

問題は、ClojureとNode.jsとのRAM消費量をどのように比較するかです。私は簡単なライブチャットアプリを書くつもりだったと言う。

RailsとNode.jsを比較しようとすると、基本的にNode.jsが100倍高速で、Railsよりも10倍少ないメモリが必要になると思いますが、ここでClojureはどのように適合しますか?

ここでClojureはメモリ消費量の点でどのように比較されますか? Node.jsがJVM上で実行されているため、Node.jsよりも多くのメモリを必要とすることはありますか?それともこれはもう真実ではないステレオタイプですか?

+0

RailsとClojureについて話していますが、そのうちの1つはWebフレームワークであり、1つは言語です。 ClojureとNode.jsで使用するWebフレームワークも含める必要があります。 –

+0

@ NiklasB。私はフレームワークを言語と比較していることを知っていますが、Clojureの経験がないので、私は言語の一般的なパターンを探しています。 –

答えて

4

現代のハードウェアで簡単にアプリケーションを使用するには、Node.jsまたはClojureのメモリ使用に関する問題がないようにしてください。

もちろん、Niklasが指摘しているように、最終的にはどのフレームワークを使用するか、アプリの書き方がどれほど優れているかによって決まります。

Clojureは(Javaランタイム環境/ JVMがかなり大きいため)かなり重要な基本メモリ要件を持っていますが、ClojureオブジェクトはちょうどそのフードのJavaオブジェクトなので、かなりメモリ効率が良いとわかりました。おそらく驚くべきことではないでしょう。

JVMアプリケーションのメモリ使用量を直接測定すると、通常は誤解を招くことがあります.JVMは通常、必要以上に多くのメモリを事前に割り当て、ガベージコレクションは怠惰な(必要に応じて)方法で収集するだけです。見かけ上の総メモリ使用量は高く見えますが、実際のワーキングセットはかなり小さくなります(これは、パフォーマンス目的で本当に気になります)。

+1

いつでもvisualvmを使用してjvmに接続し、そこにいくつの_live_オブジェクトがあるか、どれくらいのスペースを取るかを監視できます。プロファイラ/メモリをクリックするだけです。 – ivant

+0

Clojureにはまともな並行性モデルもありますが、これはRubyにはありません。 NodeJSのイベント駆動型IOは、JavaのNIO(Netty!を使用)で近似することもできます。 – Jonathan

関連する問題