Category Archives: Strings

I Love C#! – Strings

Performance #1 : Vá de StringBuilder para concatenar strings

Console Project

Para criar este app irei utilizar a estrutura simples de soluções C#.

  • Nome : DemoStringBuilder
  • Template : Console Project
  • Referências : Default
  • NetFW : 4.6

Como o objetivo é mostrar as características da linguagem, será utilizado um projeto Console Application. Todos os exemplos foram desenvolvidos no Community 2015.

App.cs

Agora vamos programar:

using System;
using System.Diagnostics;
using System.Text;

namespace DemoStringbuilder
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch st = new Stopwatch();

            string Letras = "XAMARIN";
            st.Start();
            for (int i = 0; i < 400; i++)
            {
                Letras = Letras + "XAMARIN";
            }
            st.Stop();
            Console.WriteLine("Via String : tempo gasto" + st.ElapsedTicks);

            st.Restart();
            StringBuilder sb = new StringBuilder("XAMARIN");
            for (int i = 0; i < 400; i++)
            {
                  sb.Append("XAMARIN ");
            }
            st.Stop();

            Console.WriteLine("Via StringBuilder : tempo gasto" + st.ElapsedTicks);

            Console.ReadLine();
        }
    }
}

Aqui eu realizo a concatenação de strings de duas maneiras:

  • Utilizando uma stringe realizando a concatenação com o operador +
  • Utilizando a classe StringBluilder

Agora a pergunta. Qual a forma mais rápida de concatenação de strings?

Observações

Veja alguns pontos importantes:

Note que utilizar StringBuilder é MUITO rápido.

Ou seja, para realizar operações com strings vá de StringBuilder e aproveite o buffer que está sendo usado para otimizar o desempenho.

cs_performance_string

O objeto String é imutável, e toda vez que usamos um dos métodos da classe System.String, estamos criando um novo objeto string na memória, e isto requer nova alocação de espaço para o novo objeto.

Para cenários onde requer repetidas modificações em uma string, criar um novo objeto String tem um alto custo.

Aqui o objeto StringBuilder entra em ação, esse cara é bem rápido para concatenar strings, principalmente para grandes strings.

Para concatenar strings em um loop com muitas iterações a classe System.Text.StringBuilder é ideal.

Ok! Sobre o PERFORMANCE STRINGBUILDER CONCATENAR é tudo o que eu tenho a dizer.