Lo de los tiempos es interesante... (Y lógico, por otro lado)
El problema es, claro está, que de cara a rendimiento, que es más
óptimo, ¿utilizar los constructores de clases, o bien utilizar primitivas
directamente?
Creo que es uno de los grandes problemas de todo lenguaje sin tipado
fuerte.... ;)
Saludos :)
> -----Mensaje original-----
> De: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] En nombre de Andrés
> González Aragón
> Enviado el: miércoles, 13 de julio de 2005 9:37
> Para: [email protected]
> Asunto: RE: [ASNativos] Una tontería
>
> Órale Joseba, que interesante lo que comentas de los tiempos, no sabía
> eso. Aunque estuve haciendo algunos experimentos, con la
> clase(y el tipo
> primitivo) Number igual se tarda el doble; pero con Array es
> diferente,
> miremos este ejemplo:
>
> <code>
> trace("\nARRAY");
> var primitiv_array:Array = ["mnnn", 4, "Q", 5, new Object(), "mock"];
> var t:Number = getTimer();
> for (var i = 0; i < 100000; ++i) {
> primitiv_array.toString()
> }
> trace("Tiempo con la primitiva: " + (getTimer() - t) + " ms.");
> var objet_array:Array = new Array("mnnn", 4, "Q", 5, new Object(),
> "mock");
> t = getTimer();
> for (var i = 0; i < 100000; ++i) {
> objet_array.toString()
> }
> trace("Tiempo con el objeto: " + (getTimer() - t) + " ms.");
> </code>
>
> -----Mensaje original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> nombre de Joseba Alonso
> Enviado el: martes, 12 de julio de 2005 13:07
> Para: [email protected]
> Asunto: RE: [ASNativos] Una tontería
>
> Es un poco de lo mismo de antes, el operador typeof devuelve el tipo
> primitivo del *valor* que contiene la variable. El problema es que en
> realidad para Flash una clase *no* es un tipo. Recuerda que aunque con
> el
> AS2 nos parezca lo contrario, Flash sigue siendo un lenguaje basado en
> prototypes, no un lenguaje "real" OOP basado en clases.
> Cualquier valor
> con
> una clase asociada nos devolvera "object" como tipo primitivo:
>
> <script>
> var mistring = "hola";
> trace(typeof mistring); // "string"
>
> var mistring2 = new String("hola");
> trace(typeof mistring2); // "object"
>
> var mifuncion = function(){};
> trace(typeof mifuncion); // "function";
>
> var mifuncion2 = new Function();
> trace(typeof mifuncion2); // "object";
>
> var miclip = _root.createEmptyMovieClip("clip",1);
> trace(typeof miclip); // "movieclip"
>
> var miclip2 = new MovieClip();
> trace(typeof miclip2); // "object"
>
> </script>
>
> Para comprobar si un objeto pertenece a una clase se utiliza el
> instanceof,
> para obtener la clase asociada a un valor se utiliza __proto__.
>
> Un ejemplo mas o menos claro:
>
> <script>
> var s1:String = "hola";
> trace(s1 instanceof String); // false
> trace(typeof s1); // "string"
> </script>
>
> Con los literales generamos valores primitivos, y no se asocia ninguna
> clase. Por eso el instanceof nos devuelve 'false' y el type
> es 'string'.
> Si
> queremos un objeto "real" de la clase String tenemos que hacer:
>
> <script>
> var s2:String = new String("hola");
> trace(s2 instanceof String); // true
> trace(typeof s2); // "object"
> </script>
>
> Lo que ocurre es que para que no nos volvamos locos (más) Flash nos
> permite
> llamar a metodos y propiedades sobre los valores primitivos aunque no
> pertenezcan a ninguna "Clase" esto lo hace generando el objeto y
> aplicando
> el metodo/propiedad de manera transparente para nosotros.
> Esto se puede
> demostrar con el siguiente script:
>
> <script>
> var primitiva:String = "un literal";
> var t:Number = getTimer();
> for(var i:Number = 0;i<100000;i++){
> primitiva.indexOf("l");
> }
> trace("Tiempo con la primitiva: "+(getTimer()-t)+" ms.");
> var objeto:String = new String("un objeto");
>
> t = getTimer();
> for(var i:Number = 0;i<100000;i++){
> objeto.indexOf("l");
> }
> trace("Tiempo con el objeto: "+(getTimer()-t)+" ms.");
> </script>
>
> Si lo ejecutas te dáras cuenta que con la primitiva tarda el triple de
> tiempo el llamar a los metodos, es el tiempo que tarda en generar el
> objeto
> por detrás y aplicar el metodo, mientras que con el objeto ya
> creado el
> llamar al metodo es mas rapido porque ya esta generado.
>
> Pfff, vaya chapa xDD, a ver si ha quedado claro ;)
>
> Un saludo,
>
>
> Joseba Alonso
> www.5dms.com
> www.sidedev.net
>
>
> ----------------------------------
> Lista ASNativos:[email protected]
> http://www.5dms.com/listas
> ----------------------------------
> ----------------------------------
> Lista ASNativos:[email protected]
> http://www.5dms.com/listas
> ----------------------------------
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------