【发布时间】:2018-06-18 23:55:44
【问题描述】:
我需要优化我的代码,以最大限度地增加我可以在我的 2D 块引擎中渲染的块数。目前,我将我的块存储在一个块数组中,该数组由其位置索引,其中包含位掩码和块类型信息。这是基本的想法:
private Block[,] blocks;
private BlockType[] blockTypes;
for(int x = 0; x < blocks.Length(0); x++){
for(int y = 0; y < blocks.Length(1); y++){
blocks[x,y] = new Block(blockTypes[1]);
}
}
public class Block {
protected byte bitmask;
public BlockType blockType;
public Block(BlockType blockType){
this.blockType = blockType;
}
}
public class BlockType
{
private string _name;
private int _id;
private Vector2 _textureMapPosition;
private bool _useBitmasking;
}
我是否会通过将索引保存到 blockType 而不是副本来节省大量内存?
private Block[,] blocks;
private BlockType[] blockTypes;
for(int x = 0; x < blocks.Length(0); x++){
for(int y = 0; y < blocks.Length(1); y++){
blocks[x,y] = new Block(1);
}
}
public class Block {
protected byte bitmask;
public byte blockType;
public Block(byte blockType){
this.blockType = blockType;
}
}
实际上我最初已经这样做了,但发现每次我需要在特定位置获取属性之一时都必须访问 blockType 的索引很不方便。请记住,我正在处理可能数百万个加载到内存中的这些块。
【问题讨论】:
标签: c# arrays matrix memory optimization