O propósito de hoje é descobrir o quanto a instanciação das variáveis interfere no desempenho do software. Para isso, abra o Visual Studio e crie um projeto do tipo "Console Application" para C#. Ele gera a solution, uma Class Library e uma classe Program.cs. Utilize a classe Program.cs para os testes.
A primeira coisa que a fazer é criar uma constante para guardar a quantidade de iterações (Figura 1). À medida que formos executando o teste, basta alterá-la.
Figura 1 - Total de Iterações
Agora crie o método ObterTempoVariasInstancias() para calcular o tempo de instanciação de várias instâncias (Figura 2).
Figura 2 - Método ObterTempoVariasInstancias
Neste método não há nada demais. Nas linhas 3-4 eu instancio um objeto Stopwatch para calcular o tempo de instanciação das variáveis e o tempo começa a ser contado. Perceba que nas linhas 8-9, toda vez que uma iteração é executada, uma variável nova é instanciada. Na linha 12 o tempo é finalizado e na 13 é retornado o tempo total em milissegundos.
Para medir o tempo, utilizei um notebook Core 2 Duo 2.1 Ghz de 32 bits. Fui alterando a constante TOTAL_ITERACOES e anotando os tempos. Rodei três vezes para cada quantidade de iterações e calculei a média dos tempos de 10 até 1.000.000. Seguem os tempos (Figura 3):
Fiz a mesma coisa para a instanciação de uma variável (Figura 4).
As diferenças para o método anterior estão nas linhas 6-10 em que a variável j é instanciada fora do bloco do for e reaproveitada internamente. Desta forma, existe somente uma variável sendo utilizada durante a iteração. E abaixo os resultados (Figura 5):
Por fim, comparei as duas situações diminuindo o tempo médio para instanciar uma variável e utilizá-la durante todas as iterações do tempo médio para instanciar quantas variáveis for o total de iterações (Figura 6).
Pela tabela acima, percebe-se que utilizar somente uma variável na iteração é mais rápido.
Para esse teste simples, a diferença não foi considerável (apenas para 1.000.000 iterações), porém em um software com várias buscas no banco de dados, muitos usuários acessando e funcionalidades complexas, esse tempo tende a aumentar bastante.
Portanto, uma boa prática de programação é não encher a aplicação de variáveis que podem ser reaproveitadas, reduzindo assim o tempo de execução das funções.
hum agora entendi
ResponderExcluir