1

私は、変更があったときにすべてのフレームでデータをレンダリングする必要があるグラフィックデザイン、ベクトル描画アプリケーションに取り組んでいます。問題は、ユーザーがノードを移動している場合、すべてのフレームで変更が発生することです。これは、少量のデータでは問題にならず、少量のデータしか存在しない場合は大幅に遅くなります。

その理由は、レンダリングするために計算を実行し、データを配列内に格納するためです。次に、計算を担当する関数が実行されると、GCは単にデータを破棄し、次に関数が呼び出されたときに、新しい配列と新しいデータを作成します。

C ++では、おそらくメモリにスペースを割り当て、そのスペースに(何度も)書き込みます。そうすればおそらくパフォーマンスが向上するでしょう。私たちGCの言語では、そのようにスペースを割り当てることはできません。配列をクラスメンバーとして定義し、関数からその配列に何度も書き込むという醜いハックを行う必要がありますが、その配列はその1つの関数でのみ使用され、クラスの他のメソッドでは使用されません。

私の質問は、GCを使用する言語でメモリスペースを再利用するための最良の方法は何ですか?

4

1 に答える 1

2

オブジェクトプーリングが主要なものになります。ここを参照してください: Gotoandplayチュートリアル

また 、GCに関する10のヒント

また、Flash Playerのガベージコレクションシステムに関するGrantの説明を読むことをお勧めします。これは非常にユニークであり、Flashがデータを処理する方法を理解することはデータ集約型スクリプトにとって非常に重要です。

このプレゼンテーション

于 2013-02-06T11:35:49.637 に答える