Blogger news

23:27
2
Hace poco un amigo me preguntaba el porque utilizaba la clase StringBuilder.
Basicamente, es por que al concatenar cadenas de texto es mas eficiente, a comparacion con la concatenacion de una variable de tipo string.
La clase StringBuilder, pertenece al Namespace System.Text. Seguna la msdn: Esta clase representa una cadena como un objeto, cuyo valor es una secuencia de caracteres modificable. Se dice que el valor es modificable porque puede cambiarse una vez se ha creado mediante la adición, sustracción, sustitución o inserción de caracteres.
Ahora, una variable de tipo string, que no es modificable o tambien le llaman rigida; cada vez que la variable se concatena, esta es destruida y se crea una nueva instancia de la misma para almacenar el nuevo valor, esto representa una carga extra en el procesamiento.
Como siempre vamos a verlo con un ejemplo:

static void Main(string[] args)
        {
            DateTime z_varodatInicio;
            DateTime z_varodatFin;
            TimeSpan z_varodatDiferencia;
            string z_varostrConcatenarString;
            StringBuilder z_varostrConcatenarBuilder;


            //Concatenando varaible de tipo String
            z_varodatInicio = DateTime.Now;
            z_varostrConcatenarString = string.Empty;
            for (int i = 0; i < 50000; i++)
                z_varostrConcatenarString += i.ToString();
            z_varodatFin = DateTime.Now;
            z_varodatDiferencia = z_varodatFin - z_varodatInicio;
            Console.WriteLine(string.Format("{0} Segundos con string", z_varodatDiferencia.Seconds.ToString()));

            z_varodatInicio = DateTime.Now;
            z_varostrConcatenarBuilder = new StringBuilder();
            for (int i = 0; i < 50000; i++)
                z_varostrConcatenarBuilder.Append(i.ToString());
            z_varodatFin = DateTime.Now;
            z_varodatDiferencia = z_varodatFin - z_varodatInicio;
            Console.WriteLine(string.Format("{0} Segundos con StringBuilder", z_varodatDiferencia.Seconds.ToString()));

            Console.ReadLine();
        }


El resultado:


Como podemos ver la diferencia es muy grande, concatenando 50000 veces, la diferencia es de 17 segundos.

Espero les sirva, auque este tema esta muy visto y googleando podran encontrar mucha mas informacion.

Ailas....

2 comentarios:

  1. Estimados usuarios, visitantes y gente de BlogIT Team, nos vemos forzados a dar a conocer públicamente nuestro desacuerdo con el sistema de votaciones, hemos estado analizando posible fraude en los votos.
    Nuestras sospechas tienen varios fundamentos que vamos a comentar a continuación, nuestro blog participa en la categoría "Clientes de Windows" resulta que han sucedido cosas "Muy raras y Obvias" esta ultima semana...
    Nuestro blog competidor mas cercano http://asteroide23.blogspot.com lo hemos seguido muy de cerca y resulta muy llamativo en como se dieron las votaciones.
    Se supone que las votaciones deben darse de manera gradual y paulatinamente durante el transcurso de un día, lo raro es que todas se producían entre las 02.00 am y 05.00 am (Horario Buenos Aires) una atras de la otra, era increíble pulsar f5 y ver como aumentaban.
    Otra cosa que hemos discutido con nuestro equipo es que en ese periodo también aumentaban las nuestras y en las estadísticas del hosting nuestro no aparecían rastros de trafico como para tantas votaciones.
    Pensamos que nos inflaron también con votos hechos con cuentas de e-mail falsas por si lo descalifican a ellos también se llevan a otros concursantes, ya que hubo un largo periodo para recibir votos y este blog http://asteroide23.blogspot.com recibió mas de 120 votos en solo 3 horas, el día viernes ¿No es sospechoso? Otros datos importantes, tiene solo 3 seguidores y no esta muy bien posicionando en google, ¿Como le hicieron acaparan así los votos tan rápido?
    Rogamos e imploramos que se apliquen los controles pertinentes, que se analice a full, verifiquen las cuentas y las IP de procedencia de los votos y se tome la mejor decisión posible. Confiamos en la profesionalidad de todos ustedes.
    No nos importa quedar afuera del concurso pero tampoco vamos a permitir que se pisotee a la gente y todos los demás concursantes, es un atropello a la confianza y a los valores éticos.
    Quedando a la espera de la mejor decisión que puedan llegar a tomar.
    El equipo de Windows Beta!

    ResponderEliminar
  2. que lata con este tipo ya que se calle ya perdio ya que no moleste yo no soy su rival pero gane otra categoria y las votaciones demostraron que hubo otro mejor que el hay que saber perder amigos.

    ResponderEliminar