タグ付けされた質問 「spidermonkey」

21
JavaScriptエンジンを.NETに埋め込む[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 この質問を改善する 誰かがjsエンジンを.net環境に組み込み、実際に統合しようとしたことがあるかどうか疑問に思います。私が見つけて(後に実際に使用することができLOT SpiderMonkeyの-DOTNETのプロジェクトそれはかなり古いとかなり完成していないことから、痛みと労力の)。この分野での経験がある人はいますか?SquirrelFish、V8などのエンジン。 MozillaのSpidermonkey(コアASP.NETアプリケーション内のカスタムコンポーネント用のRailsのようなミニフレームワークに使用する)に満足しているわけではありませんが、オプションを使用してさらに調査したいと思っています。コマンドラインソリューションは私が必要とするものではありません。CLR以外には依存できません。JavaScript/ C#オブジェクトとの間でメソッドを呼び出す必要があります。 // c# class public class A { public string Hello(string msg) { return msg + " whatewer"; } } // js snippet var a = new A(); console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side …

1
最適化せずに高性能のJavascriptコードを書く
大きな数値配列を操作するJavascriptでパフォーマンスに敏感なコードを書くとき(線形代数パッケージ、整数または浮動小数点数を操作することを考えてください)、JITができる限り役立つことを常に望んでいます。これはおおよその意味です。 整数計算と浮動小数点計算のどちらを実行するかに応じて、常に配列をパックSMI(短整数)またはパックDoubleにする必要があります。 私たちは常に同じタイプのものを関数に渡したいので、それらが「メガモーフィック」とラベル付けされて最適化されないようにします。たとえば、常にvec.add(x, y)両方xを呼び出しyてパックされたSMI配列、または両方をパックされたDouble配列で呼び出す必要があります。 関数をできるだけインライン化したい。 これらのケースから外れると、突然の大幅なパフォーマンス低下が発生します。これは、さまざまな無害な理由で発生する可能性があります。 のような一見無害な操作を介して、パックされたSMI配列をパックされたDouble配列に変換できmyArray.map(x => -x)ます。パックされたDouble配列は依然として非常に高速であるため、これは実際には「最良の」悪いケースです。 たとえば、(予期せず)返された、nullまたはを返した関数に配列をマッピングすることにより、パックされた配列を一般的なボックス配列に変換できundefinedます。この悪いケースはかなり簡単に回避できます。 あなたはvec.add()あまりにも多くのタイプの物を渡して、それをメガモーフィックに変えることによってなど、関数全体を最適化解除するかもしれません。これは、「ジェネリックプログラミング」を実行する場合に発生する可能性vec.add()があります。これは、タイプに注意していない場合(多くのタイプが入っていることがわかる)と、最大のパフォーマンスを引き出したい場合の両方で使用されます。 (たとえば、ボックス化されたdoubleのみを受け取る必要があります)。 私の質問は、上記の考慮事項に照らして高性能のJavascriptコードを記述しながら、コードを見やすく読みやすく保つ方法についての、やさしい質問です。私が目指している答えの種類がわかるように、いくつかの特定のサブ質問: (たとえば)パックされたSMI配列の世界にとどまりながらプログラミングする方法に関する一連のガイドラインはありますか? マクロシステムのようなものを使用せずにJavaScriptで汎用の高性能プログラミングvec.add()を呼び出しサイトにインライン化することは可能ですか? メガモーフィックな呼び出しサイトや最適化解除などの観点から、高性能のコードをライブラリにモジュール化する方法を教えてください。たとえば、線形代数パッケージAを高速で楽しく使用している場合B、に依存するパッケージをインポートしますがA、Bそれを他のタイプで呼び出して最適化を解除すると、突然(コードを変更せずに)コードの実行が遅くなります。 何か良いがある使いやすい JavaScriptエンジンがタイプで、内部でやっていることを確認するための測定ツールは?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.