2009-10-20 14 views

答えて

12

http://benchmarksgame.alioth.debian.org/を参照してください。 Javaは非常に速く、Scalaはほぼ同じ速度です。 JRubyは10〜30倍遅くなります。 Groovyはslow tooです。

+0

どのように奇妙な!テキストには "http://shootout.alioth.debian.org/"と表示されていますが、リンク先には表示されません。 – igouy

+0

"JRubyは10-30倍遅くなります" - マルチコアについては気にせず、ベンチマークのゲームショー最も速い2倍速と遅い87倍速遅いhttp://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=jruby&lang2=scala&box=1 – igouy

+0

@igouy:私は最終的に19ヶ月後にリンクを修正しました。 :-( –

1

Java。

実際、ほとんどの場合、速度の差はごくわずかです。静的言語は動的言語より高速ですが、あまり多くはありません。

+2

Javaは最速ですが、たいていは膨大な量です。 http://shootout.alioth.debian.org/を見て、JRubyとJavaを比較してください。 –

+0

それをよく見てください。あなたが正しい。 –

-3

バイトコードをコンパイルする言語は、JITを使用するJVMで同等に高速に実行されます。

+5

groovyとrubyによる反射を大量に使用すると、普通のJavaに比べて遅くなります。しかし、JSR-292(http://jcp.org/ja/jsr/detail?id=292)によれば、Java 7の方がより良くなるはずです。 – vdr

+0

私が知る限り、JRubyはインタープリタなので、 Rubyコードはバイトコードにコンパイルされません。余分な仕事の一部をJITが受け取りませんか? –

+0

"Distill JRuby:JITコンパイラ" http://www.realjenius.com/2009/10/06/distilling-jruby-the-jit-compiler/ – igouy

1

Anthonyによれば、Javaは最も速い言語です。静的型付け(ジャワ、スカラ)と

言語は動的なもの(グルービー、JRubyの)よりも高速です。

1

あなたは何を比較しているのか注意する必要があります。 "それはあなたがそれをやっていることに依存している"と同様に、他の人もそれに言及していると言います。どうすればするのですか?

例えば、Scalaのような言語を使用すると、自然にあなたは、おそらくJavaで行う方法の周りに長い時間がかかるだろうイディオムやアルゴリズムを表現できるようにすることができます。これは、同じことをするときにScalaのパフォーマンスにマッチできないと言っているわけではありません。つまり、ある言語では別の言語での自然なイディオムと一致する醜い回避策になるかもしれません。 Scalaはスケーラビリティを念頭に置いて設計されています - それゆえ、その名前はJavaです)。言い換えれば

、パフォーマンスがアルゴリズムについて通常であり、しばしばアルゴリズムの選択は、表現のしやすさについてです。つまり、そのツールがJava、Scala、JRubyなどのいずれであっても(動的な言語が病的ではない静的な言語よりも速い場合は疑わしいが)

我々はまた、などを最適化する前に、プロファイリングについて話すことができたが、それが直接の質問に対応していません。もちろん、

+0

"スケーラはスケーラビリティを念頭に置いて設計されています - そのため、スケーラブルなスケーラビリティはスケーラビリティの意味ではないと思っています。プログラム "http://www.scala-lang.org/node/250 – igouy

+0

私はそれが過負荷の言葉だと思うが、並列処理の明白な疑惑があった。並行アプリケーションを書くのを簡単にすることにより、 もちろん、それはすべてのタイプの問題に有用ではありません。 – philsquared

+0

「並列処理の可能性は間違いありませんでした」 - あなたの心の中ではどこにリンクされているのですか? – igouy

-1

私はそれがあなたがより速く何を意味しているのか、そしてパフォーマンスのためにどの程度言語が書かれているのかによると思います。

たとえば、数学的に集中的な処理を行っている場合、ScalaはJavaより高速です。

しかし、あなたはJavaで遅く、それが理にかなっているすべての場所で、最終的な使用の関数を避けるならば、あなたは私がインタビューで、最近言われていたものから、より高速スカラ座よりも実行するためにJavaを得ることができます。

人々はスカラ座やJavaが速くなりますインスタンスが表示されますように、これは、一般論で答えるのは難しい質問です。

しかし、varを使用していない場合はScalaが一般的に高速になると思われますが、valが代わりに使用されます。

+0

"たとえば、何か数学的に集中的にやっているのであれば、ScalaはJavaよりも速くなります" - それが本当であることを実証できますか? – igouy

+0

私は可能ですが、それはしばらくありますが、Scalaの設計のためにFinite Element Mathなどの並列処理が簡単な問題がある場合は、関数型プログラミングを利用することでScalaの処理速度が向上しますしかし、私が言及したように、あなたはどちらかを示すための議論を思いつくことができます、それは問題と各言語がいかにうまく書かれているかによって異なります。 –

+0

「分かりやすいような問題があれば」 - 例えばスペクトル - ノルム? http://shootout.alioth.debian.org/u32q/benchmark.php?test=spectralnorm&lang=scala&id=2 – igouy

関連する問題