¿Concatenación o uso de la clase StringBuilder?
En el Framework .NET se incluye un clase especialmente diseñada para trabajar con cadenas de caracteres, esta clase se llama StringBuilder, y aunque es una clase bastante “buena” parece que la descuidamos un poco asi que le haremos algo de publicidad. Hagamos una prueba de talentos, usaremos la clase StringBuilder solo para concatenar textos… les sugiero que creen un nuevo proyecto en .NET 2005, digamos, solo una aplicación de consola, de esas que se ven en modo D.O.S. como para no perder mucho tiempo y probar lo que nos interesa.
En la clase principal (Program.cs) escribamos el siguiente código de .NET (yo estoy usando lenguaje C#)
using System;
using System.Collections.Generic;
using System.Text;namespace PruebaEstres
{
class Program
{
static void Main(string[] args)
{
int i = 0;long valStb = 10000000;
StringBuilder stb = new StringBuilder();
DateTime iniStb = DateTime.Now;
for (i = 0; i <= valStb; i++)
stb.Append(i);DateTime finStb = DateTime.Now;
TimeSpan durStb = finStb - iniStb;
Console.WriteLine(“Duración del StringBuilder: “ + durStb.ToString());Console.WriteLine(“”);
long valTxt = 100000;
string txt = “”;
DateTime iniTxt = DateTime.Now;
for (i = 0; i <= valTxt; i++)
txt += i;DateTime finTxt = DateTime.Now;
TimeSpan durTxt = finTxt - iniTxt;
Console.WriteLine(“Duración de la Concatenación: “ + durTxt.ToString());Console.ReadLine();
}
}
}
Al ejecutar estas instrucciones obtendremos los siguientes resultados:
- Duración del StringBuilder: 00:00:00.5156250
- Duración de la Concatenación: 00:01:56.312500
Con StringBuilder he hecho la operación diez millones de veces en poco mas de medio segundo, con la concatenación solo se ha hecho cien mil veces en poco mas de 1 minuto con 56 segundos, en otras palabras, StringBuilder ha hecho en un minuto menos, cien veces mas trabajo que la concatenación. Pero no me crean ciegamente, pruebenlo ustedes mismos.
Ahora, si eso se puede hacer con solo la concatenación, imaginense que se podría hacer si lo usamos en una aplicación real. Creo que vale la pena empezar a darle más atención a las novedades que incluyen los lenguajes.
Saludos…





Leave a Reply