1. ホーム
  2. ジャバスクリプト

[解決済み】Javascript V8の速度を得るためにRuby、Pythonをブロックするものは何ですか?[クローズド]

2022-04-03 16:31:38

質問

Ruby / Pythonの機能で、最適化の実装をブロックしているものはありますか(例. インラインキャッシング ) V8エンジンが持っているものですか?

PythonはGoogleの人たちと共同開発しているので、ソフトウェア特許でブロックされることはないはずです。

あるいは、これはむしろGoogleがV8プロジェクトに投入したリソースの問題です。

解決方法は?

<ブロッククオート

Javascript V8の速度を得るためにRuby、Pythonのブロックは何ですか?

何もありません。

まあいいや、金だ。(そして時間、人、資源、でもお金があれば、それらは買えます)

V8には、ダイナミックなOO言語のための高性能実行エンジンを作ることに何十年も(個人的に言っているのであって、全体としては何世紀にも及ぶ)経験を積んだ、優秀で、高度に専門的で、経験豊富な(したがって高給な)エンジニアのチームが働いているのです。彼らは基本的に、Sun HotSpot JVM(その他多数)を作ったのと同じ人たちです。

リード開発者のLars Bakは、文字通り25年間VMに取り組んできました(そのすべてがV8につながっています)。RubyのVMを書いている人の中には、25歳にもなっていない人もいるんですよ。

<ブロッククオート

V8エンジンが持つ最適化(インラインキャッシュなど)の実装を阻害しているRuby / Pythonの機能はありますか?

少なくともIronRuby、JRuby、MagLev、MacRuby、Rubiniusはモノモーフィック(IronRuby)またはポリモーフィックインラインキャッシュを持っていることを考えると、答えは明らかに「いいえ」です。

最近のRubyの実装は、すでに多くの最適化を行っています。たとえば、特定の操作に対して、Rubiniusの Hash クラスは YARV よりも高速です。さて、このことは、Rubinius の Hash クラスは100%純粋なRubyで実装され、YARVのクラスは100%手作業で最適化されたCで実装されています。

つまり、少なくともいくつかのケースでは、Rubinius は GCC よりも良いコードを生成できるのです!

<ブロッククオート

あるいは、これはむしろGoogleがV8プロジェクトに投入しているリソースの問題です。

そうですね。Googleだけではありません。V8のソースコードの系譜は、もう25年も前のものなんです。V8に取り組んでいる人たちは、Self VM(今日までで最速の動的OO言語実行エンジンの1つ)、Animorphic Smalltalk VM(今日までで最速のSmalltalk実行エンジンの1つ)、HotSpot JVM(これまでに作られた最速JVM、おそらく最速VM時代)、OOVM(これまでに作られた最も効率の良いSmalltalk VMの1つ)を作った人たちでもあるのです。

実は、V8のリード開発者であるLars Bakが手がけたのは どれもこれも そのほかにもいくつかあります。