Concatenação rápida de strings

Veja nesta dica como concatenar strings usando o novo objeto StringBuilder.

Varias dicas sobre performance redigidas em muitos sites sobre VB6 explicavam que a concatenação de strings em um laço envolve muitas alocações de memória, prejudicando a performance da aplicação.

Para resolver o problema o ambiente .NET traz o StringBuilder, um objeto string que possui métodos para agilizar o processo de concatenação de strings. Veja os dois trechos de código abaixo:

Exemplo A:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = Now() Dim x As Integer Dim y As String For x = 1 To 100000 y &= "a" Next Label2.Text = Now() End Sub
Exemplo B:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Label3.Text = Now() Dim x As Integer Dim y As System.Text.StringBuilder y = New System.Text.StringBuilder() For x = 1 To 100000 y.Append("A") Next Label4.Text = Now() End Sub

Como podem observar foram utilizados labels para medir o tempo de execução. Em ambos os códigos estamos fazendo a concatenação de 100000 "As" em uma variável string. Mas no 1º exemplo utilizamos uma concatenação normal e no 2º exemplo utilizamos o objeto stringBuilder para realizarmos a concatenação.

Enquanto o exemplo A levou 11 minutos e 42 segundos para executar, não foi possível medir o tempo de execução do exemplo B, que foi inferior a 1 seg.

Quando aumentei em 20s o laço do exemplo B, subindo a concatenação para 10 milhões de caracteres, obtive o tempo de 18 segundos. Não cheguei a testar com o exemplo A, pois com apenas 1 milhão de caracteres desisti do teste após 25 minutos de espera.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados