Desenvolvimento - ASP. NET

ASP.NET - Ganhe agilidade em operações com Strings

Conheça a nova classe StringBuilder e descubra quanto tempo você está perdendo somando string na sua aplicação. Veja a vantagem de usar String.Equals no lugar do '='.

por Ramon Durães



Introdução

Conheça a nova classe StringBuilder e descubra quanto tempo você está perdendo somando string na sua aplicação. Veja a vantagem de usar String.Equals no lugar do "=".

Para quem faz importação de arquivos e soma muita string. StringBuilder é a melhor solução para sua aplicação.

Utilizando a classe StringBuilder

Monte esse pequeno exemplo e observe o tempo gasto em cada operação.

Estaremos utilizando 01 webform, 02 Button(ID=btNormal/Text=Normal,ID=btStringBuilder/Text=String Builder), 01 TextBox (id=txtResultado,TextMode=Multiline), 02 Label (ID=lblStatus1,ID=lblStatus2) conforme Figura 1.


Figura 1 - Web Form

Códigos

Aqui está o código do primeiro Botão.

Private Sub btNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btNormal.Click


Dim timeini As DateTime = System.DateTime.Now
Dim
timeend As DateTime
Dim texto As String
Dim
i As Int32

For i = 1 To 10000 "loop
texto += i.ToString + vbCrLf
Next

Me.txtResultado.Text = texto
timeend = System.DateTime.Now
"Exibindo tempo inicial e final
Me.lblStatus1.Text = "Inicio:" + timeini.ToString + " Fim:" + timeend.ToString

End Sub

Agora colocamos o código para o segundo botão.

Private Sub btStringBuilder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btStringBuilder.Click

Dim timeini As DateTime = System.DateTime.Now
Dim timeend As DateTime
Dim texto As New System.Text.StringBuilder

Dim i As Int32

For i = 1 To 10000 "loop
texto.Append(i.ToString)
texto.Append(vbCrLf)
Next

Me.txtResultado.Text = texto.ToString
timeend = System.DateTime.Now

"Exibindo tempo inicial e final
Me.lblStatus2.Text = "Inicio:" + timeini.ToString + " Fim:" + timeend.ToString

End Sub

Agora que já adicionou os códigos, teste sua aplicação e veja o tempo gasto em cada botão.

Utilizando String.Equals

Substitua o "=" pelo comando Equals e veja a diferença no teste abaixo:
(Adicione 01 Button (ID=btEquals) ao Form do exemplo anterior)

Private Sub btEquals_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEquals.Click

Dim strValor1 As String = "Campo de Futebol"
Dim strValor2 As String = "Quadra de Basquete"
Dim
dtIni As DateTime = System.DateTime.Now
Dim dtFim As DateTime
Dim intI As Int32
Dim Result As Boolean
Dim strResultado As New System.Text.StringBuilder


strResultado.Append("----------- Comparando usando Equals --------------")

For intI = 1 To 100000000
Result = strValor1.Equals(strValor2)
Next

dtFim = System.DateTime.Now

strResultado.Append(Environment.NewLine)
strResultado.Append("01 - Usando Equals")
"+ ControlChars.NewLine
strResultado.Append(Environment.NewLine)
strResultado.Append("Tempo:")
strResultado.Append(dtFim.Subtract(dtIni).TotalSeconds.ToString()
strResultado.Append(Environment.NewLine)

dtIni = System.DateTime.Now

For intI = 1 To 100000000
Result = (strValor1 = strValor2)
Next

dtFim = System.DateTime.Now

strResultado.Append("02 - Usando " = "")
strResultado.Append(Environment.NewLine)
strResultado.Append("Tempo:")
strResultado.Append(dtFim.Subtract(dtIni).TotalSeconds.ToString())
strResultado.Append(Environment.NewLine)

"Exibindo na caixa de texto
Me.txtResultado.Text = strResultado.ToString

End Sub

Após adicionar o código e clicar no botão (btEquals) veja o tempo gasto para fazer cada comparação.

Finalizando

Você observou nesse teste que utilizando a classe StringBuilder a aplicação terá um considerável resultado somando string, realmente é uma grande novidade no .net e que faz diferença no processamento da aplicação.

Seguindo a mesma linha utilize o String.Equals("VALOR") no lugar do "=" e o String.Concat("valor1", "Valor2") para somas pequenas strings.

Todo desenvolvedor se preocupa com a qualidade de sua aplicação, principalmente web, que são vários usuários ao mesmo tempo.

Até próximo artigo!!!

Ramon Durães

Ramon Durães - Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.