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ãesConheç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
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
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")
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 100000000Result = (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)
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!!!