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.
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.
M@U :
¿Cual anonimo?
Por Eliseo 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
Buen tip!
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
Zah :
Genial tip M@U, me servirá mucho
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?