私は、パフォーマンスのために最新の JavaScript 最適化に大きく依存する (オーディオ処理用の) コードに取り組んでいます。Int32Arrays のコンテンツに対して一連の演算を実行する JS メソッドを動的に生成し、これらのメソッドをできるだけ高速に実行したいと考えています。「魔法の」最適化は非常にうまく機能し、それをどのように支援するかについていくつかの考えがありますが、それを改善する方法があるかどうか疑問に思っています.
JavaScript エンジンに「このメソッドは常に非常にホットに実行され、その引数の型は決して変更されるべきではない」と伝える何らかの方法があれば良いと思います。そうすれば、(1) コンパイラがより早く、より適切に動作する可能性があり、(2) 引数の型が間違っている場合、または他の理由で最適化が失敗した場合、暗黙のうちにインタープリターにフォールバックする代わりに例外を取得できます。
この種の標準やイニシアチブを知っている人はいますか? または、それに失敗した場合、(Chrome、Firefox、および Safari で) コードがどのように最適化されているか、または最適化されていないかを正確に確認するためのプロファイリング ツールはありますか?
アップデート
asm.js については、聞いたことがありませんでしたが、クールに聞こえますし、この種の作業について読むのに役立つトリックがたくさんあります。
私が理解しているように、asm.js 自体は、JS エンジンの新しい仕様ではなく、高度に最適化可能な JavaScript を記述するための規則にすぎません。"use asm";
ただし、将来の JS エンジンがこれに応答し、特別な Ahead-of-Time (AOT) コンパイラを使用することを意図して、(メソッドの先頭に行を配置することにより) コードの準拠セクションにラベルを付ける方法を定義します。これらのセクションでは、コードが型の安全性などに関するより厳しい基準を満たしていない場合、コンソールにエラーを報告します。
AFAICT Mozilla はAOT コンパイラに着手しており、Google はV8 について真剣に話し合っています。JavaScriptCore の計画については何も見つかりませんし、IE に関しては息をのむことはありません。
しかし、それは私の質問にある程度答えていると思います.asm.jsで検証するコードを今生成すると、マイナス面はなく、将来のブラウザーではパフォーマンスが向上する可能性があります.