1

それほど最近ではありませんが、Androidプラットフォームで完全にJavaで記述されたゲームを公開しました。現在、できるだけ多くのパフォーマンスを得ようとしています。私のゲームの場合の問題は、より適したArrayList場所でコンテナを頻繁に使用していることだと思われます。自分自身を説明するために、私は舞台裏( Androidの/構造)Mapでトリガーされる動的メモリ割り当てを恐れていたので、それを行いました。たぶん、私が知らないAndroid / Javaプラットフォームにある種の構造があり、それは私に高速検索結果を提供し、さらに新しい要素を追加するときに動的に余分なメモリを割り当てませんか?MapTree

更新:たとえば、ゲームのパーティクルのほとんどを保持するためにArrayList構造を使用しています。もちろん、システムが1つのエンティティオブジェクトを削除するためだけにコンテナ全体を反復処理する必要があるため(もちろん、最悪のシナリオでは)、それらを個別に(順番にではなく)削除するのは苦痛です。

4

2 に答える 2

1

特に問題であることが判明しない限り、メモリ割り当てによる速度低下については心配しません。メモリの割り当ては、実際には Android ゲームの速度低下の原因ではありません。GC の実行時に問題が発生することがよくあります。Map への挿入と削除を頻繁に行わない限り、割り当てについて心配する必要はありません。

アップデート:

マップを使用する代わりに、パーティクルが不要になったときにパーティクルを「デッド」としてマークし、そのフラグを使用して更新の繰り返しでそれらをスキップすることを検討することをお勧めします。死んだパーティクルへの参照を新しい deadParticles ArrayList に保存し、新しいものが必要になったときにそのリストから 1 つだけ取り出します。そうすれば、必要なときにパーティクルにすぐにアクセスできます。

于 2012-07-21T21:30:31.150 に答える
0

要素オブジェクトを事前に割り当てて、新しいオブジェクトを割り当てるのではなく、空のオブジェクトを再利用していますか?

于 2012-07-21T21:24:05.513 に答える