[過去ログ]
【ダンジョン】 自動生成 2 【地形】 (1002レス)
【ダンジョン】 自動生成 2 【地形】 http://mevius.5ch.net/test/read.cgi/gamedev/1182223295/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
149: 名前は開発中のものです。 [sage] 2008/01/29(火) 16:53:20 ID:ubNaezab 異常にページフォルトが頻発してるね(暴走してるのかと思って一瞬焦ったお・・) プロファイラでメモリ使用状況見てみたけど(個=インスタンス数) ・全体 - 5.670.000個 - 約117M ・Dictionary<T,U>.Entry - 270,000個 - 41M(34.2%) ・DungeonAutoCreate.Data.arrow - 3,300,000個 - 38M(32.2%) ・Int32 - 1,600,000個 - 18M(15.5%) ・Int32[] - 270,000個 - 13M(10.5%) ・Dictionary<T,U> - 90,000個 - 4.5M(3.8%) これで全体の96.2%を占めている。 ・DungeonAutoCreate.Block - 90,000個 - 1.7M(1.5%) ・DungeonAutoCreate.Block[] - 10,000個 - 1.7M(1.4%) ここまで入れると99.1% 330万インスタンスあるData.arrowってのも気にはなるけど、何で辞書がこんなに大量に使われてるの? GCも何度か発生して殆どのインスタンスがGEN2になっている辺りも改善の余地がある(=無駄なGCが発生している) 処理速度に関しては明らかにボトルネックは別なので見ていない。 あと、ReadMeに書いてあるサイズ変更した場合に大量のメモリが消費される問題だけど 「古いフィールドを破棄→新しいフィールドを作成」の間で手動でGCを実行してやるのが効果的だと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1182223295/149
150: 名前は開発中のものです。 [sage] 2008/01/29(火) 20:19:35 ID:ubNaezab 既存のコードを極力変更せずに対処してみた Dictionary<Data.arrow, Block> 互換の辞書クラスを作成 ・IDictionary<Data.arrow, Block>を実装 > ArrowDict.cs ・Dictionaryとして使えるが、実態は配列として実装されている internal class ArrowDict : IDictionary<Data.arrow, Block> ttp://gamdev.org/up/img/10994.zip ↑実際のコード例(ちょっと手抜き) > Block.cs ・ArrowDictを使うように修正 // public Dictionary<Data.arrow, Block> arw = new Dictionary<Data.arrow, Block>(); public ArrowDict arw = new ArrowDict(); これでメモリ使用量が激減(117M→10M)して、処理速度が大幅に改善する筈。 これ以上の最適化が必要なら、自分でパフォーマンス計測して頑張ってくださいな。 http://mevius.5ch.net/test/read.cgi/gamedev/1182223295/150
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s