|
|
|
|
|
Dicas
|
|
Visual Basic.Net (Datas/Números/Strings)
|
|
|
Título da Dica: Concatenação rápida de strings
|
|
|
|
Postada em 26/1/2004 por Ozzys
andrecetsi@pop.com.br
Varias dicas sobre performance redigidas em muitos sites sobre VB 6 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 1o exemplo utilizamos uma concatenação normal e no 2o 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 2 0s 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.
|
|
|
|
|