Rhino Optimization

by 1 contributor:

最適化の設定

現在サポートしている最適化の設定は...

-1

常にインタープリタモードが使用されます。ランタイムの効率は低下しますが、コンパイル時間を最小限に抑えることができます。クラスファイルは生成されません。このためあなたのシステム次第ではメモリ使用量が良くなるかもしれません。インタープリタモードのその他の利点は、インタープリタが行う再帰関数の末尾呼び出しの除去 (末尾再帰除去) です。また、あなたのコードが継続オブジェクト (Continuation objects) を使用するなら、この最適化レベルを使用しなければなりません。

最適化パッケージが利用できないのなら、最適化は、あたかもそれが常に -1 であるかのように振る舞います。

0

最適化は行われません。バイトコードコンパイラは、このモードで最も速く走ります。しかし、生成されたバイトコードは、それほど効率的ではありません。

1-9

すべての最適化が行われます。簡単なデータ&型のフロー分析が行われ、Java VM レジスターに割り当てることができる JavaScript の変数と、数値としてのみ使用される変数とを判別します。ローカルな共通副次式の除去が行われます (現在はプロパティ・ルックアップのために起こるだけですが、将来、より多くの式が最適化されるかもしれません)。すべてのローカル変数とパラメータは Java VM レジスタへ割り当てられます。関数呼び出しのターゲットは、実際のターゲットのランタイムの確認まで、(ソースで使用される名前に基づいて) 投機的に事前キャッシュされ、直接にディスパッチングできます。引数は、変換オーバーヘッドの削減に、オブジェクト/数値のペアとして渡されます。【訳注: 参照 (reference) のことか】

注記

  • いくつかの言語機能 (eval の間接的呼び出しや 関数オブジェクトの arguments プロパティの使用など) は、以前はより高い最適化レベルではサポートされませんでした。これらの機能は、ECMA の言語仕様から削除されたので、現在はより高い最適化レベルでも適合しています。
  • 将来のバージョンでは、より積極的な最適化をより高い最適化レベルに割り当てるかもしれません。将来のバージョンとの互換性を考慮するなら、レベル 1 を使用してください。最大の最適化を行うのなら、レベル 9 を使用してください。しかし新しいバージョンへアップグレードするときは、あなたのアプリケーションを再テストしてみてください。

ドキュメントのタグと貢献者

タグ: 
Contributors to this page: kohei.yoshino
最終更新者: kohei.yoshino,