[Из песочницы] Когда стоит сохранять длину массива в локальную переменную в C#
Длину массива в С# стоит сохранять в отдельную переменную в случае когда у нас несколько вложенных циклов, ниже пример.
Вот простой тестовый код без сохранения длины массива в переменную:
Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
for (int i = 0; i < arr1.GetLength(0); i++)
{
for (int j = 0; j < arr1.GetLength(1); j++)
{
arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
}
}
Вот тот же код c сохранением длины массива в переменную:
Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
int len1 = arr1.GetLength(0), len2 = arr1.GetLength(1);
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
{
arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
}
}
Код с сохранением длины массива в переменную (второй вариант) выполняется примерно на 15% быстрее.
Подобный ответ можно найти в более-менее толстых книжках по C# или .Net, но при этом умный человек постит это на Хабре и никто в комментариях не указал ему что длину массива в С# сохраняют в переменную обычно для вложенных циклов и там это действительно имеет смысл.
Я просто хотел оставить там комментарий, но без регистрации не смог, а после регистрации оказалось — что я и после регистрации не могу оставить там комментарий (так как прошло более 10 дней с момента публикации). Может кто-то заметит эту заметку и скопирует ее туда в виде комментария или вроде того.