Comunidad de diseño web y desarrollo en internet

Experimentos con Arrays y Vectores

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.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate