私は WPF を使用して、Conway の Game of Life のシミュレーターを開発しています。
何らかの理由で、プログラムが最大 400,000K のメモリを使用することがあります (多数のセルを非常に高速に描画する場合)。
メモリ使用量を減らしたり、それによって引き起こされるラグを減らしたりするにはどうすればよいですか。
編集 1: メイン ウィンドウ コード: http://pastebin.com/mz0z7tBu
グリッド クラス: http://pastebin.com/ZHX1WBuK
セル構造:
struct Cell
{
public int Neighbors {get; set;}
public bool Alive { get; set; }
}
編集 2: プログラムの構造を説明しようと思います: セルは int 型の AutoProperty ネイバーと bool 型の AutoProperty IsAlive を含む構造です。
CellGrid は、セルの 2D 配列をラップするクラスです。反復ごとに、各セルの Neighbors プロパティが更新されて、生きているネイバーの数が含まれます。次に、各セルの IsALive が true または false に設定されます。これは、ネイバーの数と以前の IsAlive 状態に依存します。
MainWindow クラスには、CellGrid タイプのオブジェクトがあります。グリッドを画面にレンダリングします。
編集3:
XAML: http://pastebin.com/Zp3dr8zc
リソース.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type MenuItem}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="MaxHeight" Value="32" />
</Style>
<Style TargetType="{x:Type MenuItem}" x:Key="ParentMenuItem">
<Setter Property="Width" Value="46" />
</Style>
</ResourceDictionary>