2017-06-26 4 views
23

Twitter、GitHub、Facebookのグループディスカッションの "CrankShaftScript"(と "CrankShaftJS")というNode.jsコミュニティの参照がますます増えています。私はそうCrankShaftScriptが、このようなパフォーマンスの低下のバグでに何を参照している、Node.jsのは、C++とJavaScriptで書かれていたと思った:Node.jsの「CrankShaftScript」とは何ですか?

https://github.com/nodejs/CTC/issues/146#issue-237435588

答えて

15

CrankShaftScriptは、非慣用的および/または唯一の実行および/またはクランクシャフトJITコンパイラを使用したJavaScriptランタイムV8の特定のバージョンにも実行されます非標準準拠のJavaScriptのために使用するコミュニティ・採用用語であり、 。具体的な例としては、v8のJIT最適化の不備やv8固有の組み込み関数/グローバルの使用を回避するために、維持が困難な方法で記述されたループが挙げられます。

この用語は、node-chakracoreとspidernodeにおけるルートパフォーマンスの問題を記述するために作成されたもので、v8ではなくChakraCoreとSpiderMonkeyのランタイムを使用するNode.jsディストリビューションです。

v8の新しいバージョンに更新されたNode.js 8.1リリースシリーズでは、v8のCrankShaft JITが次のように置き換えられているため、マイクロベンチマークとマクロベンチマークでいくつかのパフォーマンス低下が起こっている理由を簡単に説明します。 TurboFan(「TF」と呼ばれることもあります)。これらの問題のように:これらの理由

、Node.jsのコミュニティは積極的に、Node.jsのコアコードでCrankShaftScriptのインスタンスを切除に取り組んでいます一般的なnpmパッケージと同様です。これにより、node-chakracoreのような代替Node.jsディストリビューションのパフォーマンスが向上し、Node.jsのJavaScriptランタイムへの将来のアップグレードのリスクが緩和されます。

+1

ノードv8.xのバージョンでV8 5。9+(これはデフォルトでTurboFanを有効にします)は、この執筆時点でまだリリースされていません。しかし、ノードv8.0.0はV8 5.8を持っていました(V8のバージョンはデフォルトでTurboFanを有効にしていませんが)。明確化のために – mscdex

+0

ありがとう!私は質問を編集しました。 –

+1

私のコメントは、V8 5.8のみを持つノードv8.1.xには依然として関連しています。 5.8で回帰があったかもしれませんが、これはデフォルトとしてTurboFanへの切り替えのためではありません。前述のように、デフォルトエンジンの切り替えは5.9でしか起こらなかったからです。また、ノードv8.1.xでは、セマフォによってV8バンプが5.9+(ノードv8.2.x以降のみ)になることはありません。 – mscdex

1

クランクシャフトは、V8、Node.jsのJavaScriptランタイム(のためのコンパイルインフラストラクチャですdetails)。

これはnow being replaced by TurboFanです。

+6

この回答を改善していただければ幸いです。 :) –

+0

うん、失望... –

22

CrankShaftScriptは、V8のCrankShaftエンジンでより早く実行されるJSイディオム(特定のタイプのループなど)にコミュニティから与えられた名前です。

CrankShaftはTurboFanというエンジンに置き換えられています。長年にわたって開発者によって書かれたJSコードの多くは、クランク軸に高速に実行知らイディオムを使用して(例えば「CrankShaftScript」で書かれた)クランク軸に高速に実行するために特別に書かれていない - V8エンジンは、今あるので、これは必ずしももはやケースですCrankShaftで最も速く走ったコードは必ずしもTurboFanで最速に走るとは限りません。

私の答えはあまりにも冗長である場合は、ここではその詳細な方が良いかもしれNodeJS Benchmarksスレッド上great commentです:

が...私は、Nodeコアの一部は、ソートの CrankshaftScriptで書かれていることに気づきました、すなわちクランクシャフトで非常にうまく動作するものに向けて慎重に調整されている。 。

関連する問題