Самый быстрый способ заполнить матрицу случайными байтами - PullRequest
9 голосов
/ 12 апреля 2011

Я хочу заполнить массив случайными значениями . Вот код, который я написал:

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 голосов
/ 12 апреля 2011

Что ж, вы можете создать один одномерный массив, заполнить его, а затем скопировать его с помощью Buffer.BlockCopy:

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

Однако, прежде чем пытаться оптимизировать еще больше - насколько быстро выэто должно быть?Вы протестировали приложение и определили, что это узкое место вашего приложения?

0 голосов
/ 12 апреля 2011

Зубчатые массивы (массивы массивов) считаются более быстрыми, чем многомерные массивы, , но вы получите скорость за несколько мс. Это того стоит?

Эта оптимизация не стоит тратить на нее свое время.

...