この写真で[ガベージコレクション]とはどういう意味ですか?そして「20コール」のこと?
つまり、GCに時間がかかった理由をどのように理解できますか?たくさんの小さな物を集めていましたか?一つの大きなもの?これを最適化する方法についてのヒントはありますか?
問題のコードは次のとおりです。
private void DeserializeFrom(SerializationInfo info)
{
Width = info.GetInt32("width");
Height = info.GetInt32("height");
var data = (List<byte>)info.GetValue("cells", typeof(List<byte>));
cells = new Cell[physicalSize.Width, physicalSize.Height];
int pos = 0;
for (int x = 0; x < physicalSize.Width; x++)
{
for (int y = 0; y < physicalSize.Height; y++)
{
cells[x, y] = new Cell();
if (x < Width && y < Height)
{
cells[x, y].HasCar = data[pos];
pos++;
}
}
}
}
派手すぎるものはありません。犯人は大きなList<byte>
物だと思いますが、(小さな物をたくさん集めるのではなく)一瞬で大きな物を集めることになっていると思いました。