言語から JavaScript へのコンパイラを作成しています。その言語には、定義上、参照透過関数があります。JavaScript の場合、これは、演算ごとに新しい配列を作成する必要があるため、行列/ベクトルの合計などの数値演算のオーバーヘッドが大きいことを意味します。回避策を見つけようとしていますが、思ったよりも難しいことがわかりました。この問題を解決する方法はありますか?
質問する
61 次
2 に答える
0
参照透過関数を処理する一般的な方法は何ですか?
私の見解では、関数の出力をキャッシュしたいと思うでしょうが、スコープとガベージ コレクションをどのように扱うのでしょうか?
参照透過関数を実際に実装する代わりに、最善の努力をするとどうなるでしょうか。同じスコープ内の式はキャッシュの恩恵を受けますが、それ以外の場合は再計算する必要があります。これにより、ガベージ コレクションの問題が解決されます。
あるいは、ガベージ コレクションを実行しようとせず、最後に使用されたもの、最も頻繁に使用されたもの、またはランダム置換などのプルーニングを備えた一般的な限られたスペースのキャッシング スキームを使用するだけのグローバル キャッシング スキームを設定することもできます。これにより、ガベージ コレクションの制約が緩和されます。
于 2013-10-04T16:37:05.573 に答える
0
https://github.com/kripken/emscripten/wikiまたはhttps://code.google.com/p/v8/でいくつかの手がかりを得ることができるかもしれません
私は彼らがその分野で多くの仕事をしたことを知っています.
于 2013-10-04T16:36:22.600 に答える