Concatenação rápida de strings

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

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.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?