Quando salvar o comprimento de uma matriz em uma variável local em C #

Lendo Habr, deparei-me com o artigo " Vale a pena salvar o comprimento de uma matriz em uma variável local em C #? " (Que estava na seção "melhor"). Parece-me uma pergunta estúpida, não medições totalmente corretas (por que não existem medições para loops aninhados?) E uma conclusão estranha.

O comprimento da matriz em C # deve ser armazenado em uma variável separada no caso em que temos vários loops aninhados, abaixo está um exemplo.

Aqui está um código de teste simples sem armazenar o comprimento da matriz em uma variável:

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); } } 

Aqui está o mesmo código ao salvar o comprimento da matriz em uma variável:

 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); } } 

O código que salva o comprimento da matriz em uma variável (segunda opção) é executado 15% mais rápido.

Uma resposta semelhante pode ser encontrada em livros mais ou menos espessos em C # ou .Net, mas, ao mesmo tempo, uma pessoa inteligente publica isso no Habré e ninguém nos comentários indicou a ele que o comprimento da matriz em C # é armazenado em uma variável geralmente para loops aninhados e realmente existe. significado.

Eu só queria deixar um comentário lá, mas não podia sair sem registro, e após o registro, constatou-se que, após o registro, não era possível deixar um comentário lá (já que mais de 10 dias se passaram desde a publicação). Talvez alguém note essa nota e a copie para lá como um comentário ou algo assim.

Source: https://habr.com/ru/post/pt438516/


All Articles