gpt4 book ai didi

c# - 大锯齿状数组的快速初始化

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:49 25 4
gpt4 key购买 nike

我有一个代表 Grid 的交错数组,数组的每个项目都是一个 CellGrid 有 2600 行和 2600 列。我需要计算每个 Cell 的坐标,创建 Cell 对象的实例并将其添加到数组中。现在,我使用的代码在我的计算机上大约需要 3200-3800 毫秒。有什么方法可以让它更快吗?

public GridCell[][] Cells;
private void CreateCells(int cellWidth, int cellHeight, int startX, int startY)
{
Cells = new GridCell[RowsCount][];
for (int i = 0; i < RowsCount; i++)
{
Cells[i] = new GridCell[ColumnsCount];
for (int j = 0; j < ColumnsCount; j++)
{
Point coordinate = new Point(startX + cellWidth * j, startY + cellHeight * i);
Cells[i][j] = new GridCell(cellWidth, cellHeight, coordinate);
}
}
}

最佳答案

考虑到您正在处理 6760000 个对象,您的性能很好。而主要的时间可能花在了在堆上构建新对象上。因此,正如您所观察到的那样,使用结构而不是类会给您带来提升。

如果你有很大的 CPU 缓存,你也可以尝试使用单个数组,如:

public GridCell[] Cells = new GridCell[RowsCount * ColumnsCount];

寻址,例如:

Cells[i * ColumnsCount + j] = x;

关于c# - 大锯齿状数组的快速初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com