Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Melhorando performance com Strings

por Thiago Martins Coelho em 24/5/2010

Olá amigos desenvolvedores, nesse artigo irei mostrar a vocês como melhorar e otimizar seu código na concatenação de Strings, e como você pode usar o objeto StringBuilder.

Crie um novo projeto do tipo "Windows Forms" e no form principal arraste dois botões e nomeie-os de "btnConcat" e "btnSB" e troque a propriedade "Text" para "Concatenação" e "StringBuilder", respectivamente. Agora adicione um label com o nome lblResult. Pronto, sua tela está criada, vamos agora para o próximo passo.

Clique duas vezes no btnConcat e para seu método de clique adicione o seguinte código:

       private void btnConcat_Click(object sender, EventArgs e)
       {
           string str = string.Empty;
           DateTime inicial = DateTime.Now;


           for (int i = 0; i < 10000; i++)
           {
               str = str + i.ToString();
           }


           TimeSpan resultado = DateTime.Now - inicial;
           lblResult.Text = resultado.Milliseconds.ToString();
       }

Neste código, estamos concatenando 1000 strings com o operador "+=", e obtendo o tempo que é necessário para esta operação, em milisegundos.

Agora, faça o mesmo para o btnSB, mas com o seguinte código:

private void btnSB_Click(object sender, EventArgs e)
       {
           StringBuilder str = new StringBuilder();
           DateTime inicial = DateTime.Now;


           for (int i = 0; i < 10000; i++)
           {
               str.Append(i.ToString());
           }


           TimeSpan resultado = DateTime.Now - inicial;
           lblResult.Text = resultado.Milliseconds.ToString();
       }

Neste código, estamos fazendo o mesmo, só que usando o objeto StringBuilder para fazer a concatenação.

Compile seu projeto, clique nos dois botões e verifique o tempo gasto em cada uma das operações.

Impressionante não é mesmo? O StringBuilder é bem mais rápido do que a concatenação de strigs com "+=",agora você deve estar com uma dúvida do porquê disso tudo.

A resposta é que toda vez que que você concatena uma string, um novo objeto é criado na memória, então no primeiro caso você criaria 10000 vezes o objeto na memória pois o objeto string é imutável (não se pode alterar o valor após ter sido criado), já com o StringBuilder, os valores adicionados estarão alocados em um único lugar da memória.

Espero ter ajudado a todos, segue um link para que vocês aprendam mais sobre o StringBuilder: http://msdn.microsoft.com/ptbr/library/2839d5h5(VS.90).aspx

Abraços, Thiago Coelho!



voltar   comente  subir

Download Copy





 
Thiago Martins Coelho



Comentários:


Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Permitir apenas números em um TextBox em Windows Forms
Melhorando performance com Strings




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC