A performance do StringBuilder – concatenando strings em C# Asp.net

0

Você que alguma vez utilizou String para para concatenar caracteres pode muitas vezes ter utilizado sem perceber que alguma coisa atrapalha (nem que por pouco) a performance do seu código. Hoje vamos falar da StringBuilder ou melhor dizendo, construtor de strings.

Sobre a classe StringBuilder

 

A String Builder é uma ferramenta que você pode utilizar para manipular strings de maneira bem mais otimizada.

A classe String Builder já aproveita o buffer de rede de caracteres que esta sendo usado para otimizar o desempenho.

Já a operação de concatenação simples, referencia a cada loop uma nova referência de objeto pois o objeto String é imutável

Vamos ao nosso pequeno tira-teima :

 static void Main(string[] args)
        {
            Stopwatch st = new Stopwatch();

            string Letras = "CodigoSimples.NET";
            st.Start();
            for (int i = 0; i < 1500; i++)
            {
                Letras = Letras + "CodigoSimples.NET";
            }
            st.Stop();
            //-----------------------------------------------------------------------------------
            Console.WriteLine("Usando String :-> tempo gasto : " + st.ElapsedTicks);
            st.Restart();
            System.Text.StringBuilder sb = new System.Text.StringBuilder("CodigoSimples.NET");
            for (int i = 0; i < 1500; i++)
            {
                sb.Append("CodigoSimples.NET");
            }
            st.Stop();
            Console.WriteLine("Usando Stringbuilder :-> tempo gasto : " + st.ElapsedTicks);
            Console.ReadLine();
        }
        

Veja o resultado:

stringbuilder

A operação usando StringBuilder é MUITO mais rápida.

Por isso, na próxima vez que concatenar strings, utilize a operação StringBuilder ( System.Text.StringBuilder )

Um abraço a todos!

Quem quiser fazer download do projeto : Download

Para leitura complementar, veja o que a Microsoft ainda diz sobre :

O objeto String é imutável. Toda vez que você use um dos métodos na System.String classe, que você cria um novo objeto de seqüência de caracteres na memória, que requer uma nova alocação de espaço para o novo objeto. Em situações em que você precise realizar modificações repetidas uma seqüência de caracteres, a sobrecarga associada à criação uma nova String o objeto pode ser caro. A classe System.Text.StringBuilder pode ser utilizada quando você desejar modificar uma sequência de caracteres sem criar um novo objeto. Por exemplo, usando o StringBuilder classe pode melhorar o desempenho quando concatenando muitas cadeias de caracteres juntos em um loop.

Embora o StringBuilder seja um objeto dinâmico que lhe permite expandir o número de caracteres da cadeia de caracteres que ele encapsula, você pode especificar um valor para o número máximo de caracteres que ele pode armazenar. Esse valor é chamado a capacidade do objeto e não deve ser confundida com o comprimento da string que contém o atual StringBuilder. Por exemplo, você pode criar uma nova instância da classe StringBuilder com a cadeia de caracteres “Hello”, que tem um tamanho de 5, e você pode especificar que o objeto tem uma capacidade máxima de 25. Quando você modifica o StringBuilder, ele não realoca o seu tamanho  até que a capacidade seja atingida. Quando isso ocorre, o novo espaço é alocado automaticamente e a capacidade é dobrada. Você pode especificar a capacidade da classe StringBuilder usando um dos construtores sobrecarregados. Veja mais em : http://msdn.microsoft.com/pt-br/library/2839d5h5%28v=vs.110%29.aspx

Bom pessoal, é isso! Não deixe de acessar nossa Fã Page

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com