用最快的方式填充一个矩阵,使其包含随机字节。

9

我想要用随机值填充一个数组。我写的代码如下:

public class PersonalityMap
{
    const int size = 16;
    byte[,] fullMap = new byte[size, size];

    /// <summary>
    /// Generates a random map
    /// </summary>
    public PersonalityMap()
    {
        Random random = new Random();
        byte[] row = new byte[size];
        for (int i = 0; i < size; i++)
        {
            random.NextBytes(row);
            for (int j = 0; j < size; j++)
                fullMap[i, j] = row[j];
        }
    }
}

但我觉得有一种更快的方法来做这件事。
2个回答

9

你可以创建一个单一维数组,填充它,然后使用Buffer.BlockCopy进行复制:

Random random = new Random();
byte[] row = new byte[size * size];
random.NextBytes(row);
Buffer.BlockCopy(row, 0, fullMap, 0, size * size);

然而,在你进一步优化之前,你需要考虑这个速度有多快?你是否对你的应用程序进行了基准测试,并确定这是你的应用程序的瓶颈?


1
没错,我认为瓶颈不会出现在这里,但我刚开始编写应用程序,想要做得好一些。谢谢Jon。 - Jaime Oro
@JaimeOro 过早的优化通常是不好的。 - o0'.

-1

锯齿数组(数组的数组)被认为比多维数组更快,但是你只能提高几毫秒的速度。这值得吗?

这种优化不值得你花时间去做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接