jueves 12 de febrero de 2009

Rendimiento en Laszlo

Trabajando nuevamente con laszlo, la necesidad de una aplicacion mas rapida desperto mi interes por analizar los tiempos con que se invocan metodos y funciones en laszlo. No encontre mucho en el manual, hablan de variables locales y otras cosas pero nada al respecto de lo que hablaremos aqui.

Rapidamente una explicacion en 30,000ms :) Los procedimientos que tenemos pueden estar en funciones JS o en metodos de nuestros objetos.

En el siguiente codigo, hay dos funciones JS, como vemos la funcion principal es despachador(), la cual invoca a script_js() 9000 veces. Como se ve en la linea comentada, frmCiudades.metodo_local(), es un metodo de un objeto frmCiudades y podemos conmutar entre uno y otro, cambiando los comentarios.

<script> <![CDATA[
function despachador(){
var begin = (new Date).getTime();
for (var i = 0; i < 9000; i++){
script_js();
//frmCiudades.metodo_local();
}
var end = (new Date).getTime();
var total = end - begin;
colocar.setAttribute('text',total);
}

function script_js(){
frmCiudades.setAttribute('title','updating...');
}
]]>
</script>


La alternativa a eso es tener un despachador2 en la clase frmCiudades, pero ahora como metodo y ver como responde. A continuación vemos el codigo.

<method name="metodo_local" >
frmCiudades.setAttribute('title','updating... Metodo');
</method>
<method name="despachador2"> <![CDATA[
var begin = (new Date).getTime();
for (var i = 0; i < 9000; i++){
//script_js();
metodo_local();
}
var end = (new Date).getTime();
var total = end - begin;
colocar.setAttribute('text',total);

]]>
</method>


Lo que hice aqui es medir los tiempos que Laszlo se tarda en:
Caso 1. Desde la funcion JS despachador() invocar el metodo metodo_local()
Caso 2. Desde la funcion JS despachador()invocar la otra funcion JS script_js()
Caso 3. Desde el metodo despachador2() invocar la funcion JS script_js()
Caso 4. Desde el metodo despachador2() invocar el metodo metodo_local()

Aqui la hipotesis es saber que combinacion nos da mejores resultados, o que sistemas (funciones JS o metodos locales) operan mas rapido. La actividad realizada fue que ejecutaba mi programa y en cada uno de esos casos 20 veces, dando asi pequeñas muestras de cada caso.

Los promedios resultados son:
Caso 1. 1341.95ms
Caso 2. 1318.10ms
Caso 3. 1360.75ms
Caso 4. 1383.15ms

Estos resultados me indican que las funciones de JS son mas rapidas, y la alternativa mas rapida es invocar una funcion desde otra funcion en JS.

3 comentarios:

LiLitH 2.0 dijo...

aaah.! O.o
sí.. supongo qe para el qe le entienda debe ser muii importante.. jep =þ

weno, espero andes bien ii qe a pesar de tanto trabajo tmb te
des tiempo para ti.! ^^


bzzitouzz.!

David Estrada dijo...

jajaja, hola Martín! Es agradable leer post de este tipo, hemos aprendido algo ahora, lo tomaré en cuenta para cuando tenga que desarrollar, porque a parte de flojos, los programadores somos bien codos :p

Saludos.

Martin Edmundo dijo...

Hola David.

jejeje exacto, somos codos en cuanto a optimizar los recursos ya que son finitos, Alguna vez un mestros con Maestria en Ing de SW, me comento que se ahorraba antes pues tenian pocos recursos y que ahora son mas, en su momento le dije que no estaba de acuerdo, que como sea, y donde sea tenemos que administrar los recursos, sino estarias callendo un problema de uso desmedido de recursos. Creo que comentare algo sobre esto en proximos post.