Retomando un poco las novedades de Adobe Flash CS4, quiero mencionar otra característica que no ha tomado mucho hype hasta ahora, a tal grado que en muchos tipos de experimentos, o pruebas de rendimiento no se explota su potencial.
Parece que pocos conocen acerca de la nueva clase Vector.
Un vector es un conjunto de elementos que comparten el mismo tipo de datos (base del tipo de vectores), similar a lo que hace un Array solo que con la diferencia de que este ultimo puede almacenar elementos de distintos tipos de información. Ademas, de que la base del tipo del vector puede ser de cualquier tipo único, incluyendo alguno que haya sido construido en una clase personalizada.
Si en algún caso es requerido almacenar datos en una matriz donde todos sus elementos tienen el mismo tipo de datos, te recomiendo usar un Vector para ello en lugar de un Array, tan solo recuerda que hasta ahora solo es soportada en Flash Player 10, AIR 1.5.
Array vs Vector
Cree esta sencilla función la cual crea un bucle de 10 millones de ciclos, y dentro de cada uno añade un valor aleatorio entre 0 y 100 con Math.random() por lo que este valor puede incluir decimales muy minuciosos:Código :
var length:int = 10000000; var v:Vector.<int> = new Vector.<int>(length, true); var a:Array = new Array(length); function checkPerfomance(object, loop:int):Number { var startTime:Number = getTimer(); var finalTime:Number; for (var i:int = 0; i < loop; i++) { object[i] = Math.random() * 100; if(i + 1 == loop){finalTime = Number(getTimer() - startTime) /1000;} } // return finalTime; }; // trace(checkPerfomance(v, length)); // 3.297 trace(checkPerfomance(a, length)); // 8.086 trace(3.297/8.086) * 100 + "%"); // 40.77417759089785 %Es genial cuando notas que la introducción de la clase Vector, en este tipo de acciones es cerca de un 40% mas rápido.
Conclusión
Esa parte te toca a ti darla, puedes probar con diferentes ciclos y/o valores aleatorios para que lo confirmes. ¿Seguirás utilizando para todo Array por desconocimiento?¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por daz_angie el 22 de Enero de 2009
Por M@U el 22 de Enero de 2009
Por Dano el 22 de Enero de 2009
M@U :
Lo del título de te lo perdono. Pero lo del 40% no que no. Según tu prueba, vectores es 60% mas rápido, no 40% como tu dices. Ese cuarenta es la parte que es respecto a la mayor.
En otras palabras, si tengo cien monedas, y tu tienes cuarenta. Yo diría que tienes 60% menos monedas que yo, porque tienes solo el 40% mio.
Por daz_angie el 22 de Enero de 2009
M@U :
¿Cual anonimo? fui yo
Por Eliseo el 22 de Enero de 2009
Por Andros el 22 de Enero de 2009
Desconocía totalmente esta nueva clase.
Seguro que nos ayuda mucho.
Tx
Por Daniel Rodriguez el 22 de Enero de 2009
gracias
Por Juanlu_001 el 22 de Enero de 2009
Buen tip!
Por M@U el 22 de Enero de 2009
Dano :
Y tienes mucha razón con lo que dices Dano, al poner el valor menor respecto al mayor tuve que haber escrito 40% mas lento hacia la clase Array. Buena observación y un tanto importante, ¿algún editor puede arreglar ese detalle?, seguro hará relucir un poco mas a Vector.
Por eldervaz el 22 de Enero de 2009
daz_angie :
En los Array puedes o NO definir el tamaño del arreglo
Buen tip
Por Zah el 22 de Enero de 2009
Por M@U el 22 de Enero de 2009
Zah :
Por Otaku RzO el 23 de Enero de 2009
Genial tip M@U, me servirá mucho .
Por tomasdev el 24 de Enero de 2009
Por cristel el 03 de Marzo de 2010
Por jaime el 16 de Marzo de 2010
Por AndyX® el 22 de Diciembre de 2010
De todas maneras, muy bueno que te pongas a hacer estas pruebas.
Saludos!
AndyX®
AndyX©
AndyX?