Mostrando entradas con la etiqueta GeneXus. Mostrar todas las entradas
Mostrando entradas con la etiqueta GeneXus. Mostrar todas las entradas

lunes 17 de marzo de 2008

StringBuilder vs. concatenación de String

Trabajando para la última versión de GeneXus (Rocha) me tocó escribir algunas sentencias SQL. Como hasta ahora hice siempre, empecé declarando una variable string con la sentencia y a esta le concatenaba los parámetros que fuera necesario*.
Pero en determinado momento, Milano me recomendó como buena práctica, utilizar StringBuilder para concatenar strings, en lugar de la fácil y práctica forma de concatenación con el '+'.

Pero por qué? "se supone que es mas eficiente" me dijo... "no es que esa concatenación vaya a significar una demora en el proceso, pero es una práctica recomendable utilizar StringBuilder".

No es que desconfíe de el :) pero me interesó hacer una prueba para ver que tan eficiente era, y los resultados de esa prueba me motivaron este post asique acá están.

Primero voy a mostrar la prueba que hice. El main es el siguiente:

 

string text = "First text";
int i = 100000;

DateTime start;
DateTime end;
TimeSpan duration;

start = DateTime.Now;
InsertString(text, i);
end = DateTime.Now;
duration = end - start;
Console.WriteLine(string.Format("InsertString took {0}:{1} seconds", duration.Seconds, duration.Milliseconds));

start = DateTime.Now;
InsertStringBuilder(text, i);
end = DateTime.Now;
duration = end - start;
Console.WriteLine(string.Format("InsertStringBuilder took {0}:{1} seconds", duration.Seconds, duration.Milliseconds));

Como verán, simplemente tomo el tiempo antes y después de cada llamada y luego imprimo la diferencia en segundos y milisegundos para saber cuanto demoró cada función. La funciones InsertString e InsertStringBuilder son muy básicas pero también las pegaré acá:

private static void InsertString(string text, int i)
{
for (int j = 0; i >= j; j++)
text += " new text";
}

private static void InsertStringBuilder(string text, int i)
{
StringBuilder builder = new StringBuilder(text);
for (int j = 0; i >= j; j++)
builder.Append(" new text");
}

Dije que eran básicas :)
Pues bien, ahora el resultado...


StringBuilder


Bastante increible no? por lo menos a mi me llamó enormemente la atención, más de 20 segundos contra menos de 1!. Obviamente esta diferencia se hace muy notoria por la cantidad de iteraciones que tiene la concatenación, si solo es concatenar un string con otro una única vez, posiblemente no valga la pena utilizar el StringBuilder.


*Nota: si los parámetros son ingresados por el usuario final de la aplicación esta no es una buena práctica. Podemos llegar a ser víctimas de SQL Injection.

Seguir Leyendo

lunes 12 de noviembre de 2007

El fenomeno Facebook

Me tiene realmente asombrado lo que viene creciendo Facebook a nivel local. Hace no muy mucho me cree una cuenta, en ese entonces en el Network de Uruguay eramos bastante menos de 3000 personas y hoy (mientras escribo estas lineas) ya somos 3241 (posiblemente sean mas cuando esto se publique).
Todos los dias veo amigos o conocidos que se hacen una cuenta y gracias a la funcionalidad de poder listar quienes de tus contactos tienen cuenta en facebook, en seguida te contactan.

Tambien esta muy bueno el hecho de que todo lo hagan los propios participantes, como crear grupos de interes, eventos, etc. Personalmente cree el grupo de DeKlarit, y el de XMLators :)

Los grupos pueden ser "sponsoreados" lo que significa que alguien publica contenido oficial, por ejemplo, el grupo de Seinfeld esta sponsoreado por la propia NBC y mas alla de que hacen un poco de publicidad promocionando la 9na temporada en DVD, agregan aplicaciones y contenido oficial de la serie. Por si hay algun fanatico de la serie leyendo esto, le recomiendo la aplicacion de Seinfeld en Facebook, la cual tiene una trivia sumamente adictiva!

Lo ultimo, la posibilidad de hacer aplicaciones tambien le da un valor agregado. Yo hice una muy elemental para probar Popfly y la integracion con Facebook y la verdad que un muuuy facil. No se requiere ningun conocimiento de programacion en si para tener una aplicacion andando. Aca esta la que hice yo :)

Seguir Leyendo

domingo 23 de septiembre de 2007

Encuentro GeneXus

Me veo en la obligacion de hacer por lo menos una breve mencion del encuentro GeneXus. El simple hecho de ser uruguayo y de trabajar en IT no solo me habilita sino que me obliga a hacerlo (sin mencionar otra tantas razones).

Una de las curiosidades es que en las publicaciones oficiales se le llame el Encuentro GeneXus (meeting) pero internamente nadie lo llama asi, si no, el EVENTO.

Para quien no sepa de lo que hablo, GeneXus es una herramienta que permite crear aplicaciones win, web y para smart devices sin necesidad de para ello aprender sobre estas tecnologias. La idea es que uno define sus componentes de negocios (la logica del mismo) y despues le dice "esto sera una aplicacion web contra Oracle" o "win con SQL Server", en fin. Esto de es "win" o es "web" o la base de datos misma es configurable y GeneXus se encarga de todo.

No da para explicar GeneXus en un solo post. Aparte hay cientos de blogs de gente en mucho mejores condiciones que yo para hablar de GeneXus.

Dejo un par de links para que sigan el evento, y quien no conozca GeneXus aproveche a hacerlo.

El blog del evento
La pagina goficial
La radio (hay podcasts)
Los videos de invitacion

Seguir Leyendo