quarta-feira, 3 de dezembro de 2008

Parte 3: Concatenando Strings!

Mais um pequeno teste para avaliarmos as melhoras.
A concatenação de strings pode ser feita de diversas maneiras. O problema é: Qual é a melhor maneira?

Existem mil maneiras de preparar Néston, invente uma!

Fizemos um teste com 6 maneiras diferentes de concatenar uma string. São essas:

1 - Executando um Append por texto Ex:
dim MyStr as new StringBuilder
MyStr.Append("Texto1")
MyStr.Append("Texto2")

2 - Utilizando o Append.Format
dim MyStr as new StringBuilder
MyStr.AppendFormat("{0}{1}","Texto1","Texto2"

3 - Dando um apend e concatenando os textos com &
dim MyStr as New StringBuilder
MyStr.Append("Texto1" & "Texto2")

4 - Concatenando diretamente utilizando o operador +
dim MyStr as String = "Texto1" + "Texto2"

5 - Concatenando diretamente utilizando o operador &
dim MyStr as String = "Texto1" & "Texto2"

6 - E por fim, utilizando diretemante o String.Format para concatenar
Dim MyStr as string = String.Format("{0}{1}", "Texto1", "Texto2")


A operação funciona da seguinte forma:

TempoInicial = Now() ' Definimos o tempo inicial For I as Integer = 0 To 10000 ' Rodamos 10000 vezes o mesmo processo pra medir o tempo MyStr = MyStr CONCATENANDO "Texto1" "Texto2" 'utilizamos aqui, cada vez um processo diferente dos 6 citados acima Next

Ou seja, na segunda iteração, vamos ter "Texto1Texto2" Concatenando com "Texto1" e "Texto2"
Na terceira iteração teremos "Texto1Texto2Texto1Texto2" Concatenando com "Texto1" e "Texto2" e assim consecutivamente.
Isso pra aumentar cada vez mais o tamanho da string que recebe o resultado do concatenamento.

Rodamos o mesmo teste 10 vezes de cada maneira, para pegarmos uma média de tempo que demorava a executar.

Resultado: O resultado era próximo do que eu esperava. o processo 4, 5 e 6 estão fora de cogitação! Eles sempre apresentaram mais de 1 segundo para rodar as 10 mil iterações da concatenação!
O que me assustou, foi o resultado positivo!
Eu realmente acreditava que o Append.Format (nr. 2) era a melhor, porém fui surpreendido!
Ela foi a pior das melhores! Ganhou apenas das outras três que já descartamos.
A maneira 3 apresentou alguns dos resultados idênticos aos da maneira 1! Porém na média final, perdeu!
A maneira 1, utilizando um append por linha, mesmo sendo a que menos me atraia, é a que tem melhor performance!
Os resultados numéricos podem ser vistos na imagem!

O fonte está disponível no meu SkyDrive. Clique aqui para fazer download!

0 comentários: