Se sabe que Flash se comporta de maneras muy impredecibles cuando se trata de manipular datos. Tengo curiosidad de que haya algún beneficio de rendimiento/memoria al usar Números en lugar de Ints además de los valores que necesitan precisión. He escuchado que algunas operaciones básicas en Flash pueden convertirse varias veces entre los dos tipos para resolver la expresión. También he escuchado que Flash runtime, bajo el capó, en realidad asigna ints a números/flotantes que no son de precisión durante el tiempo de ejecución. Algo de esto es verdad?¿Las entradas son siempre más rápidas que números/flotantes en AS3?
Respuesta
El tiempo de ejecución de Flash es un lugar oscuro.
- Como mencionó AVM2 does convert big ints into Number.
- Los números enteros son reales.
- And there's more stuff about ints.
- Uints solían ser lentos utilizados en un bucle BUT NOW THEY ARE NOT (los resultados en el artículo parecen ser una combinación de generación de bytecode extraña y optimizaciones de JIT).
- Los números ocupan más espacio en la memoria, pero esto es
nothing
en comparación con incluso un solo archivo JPEG. - Lógicamente se siente mejor usar
uints
en bucles. - Los números son fallas de punto flotante, tiene que tener cuidado al compararlos.
Jackson Dunstan hace pruebas bastante buenas de diferentes construcciones de lenguaje AS3. Por supuesto, siempre es bueno verificar los resultados usted mismo. De la serie de rendimiento de aproximadamente 10.2 se puede ver que con cada nueva versión de Flash Player optimizan algo, pero otras cosas pueden ser más lentas: 123.
P.S. Esta respuesta podría envejecer muy pronto y podría ser citada en un par de años más tarde, lo que por supuesto será incorrecto.
No obtienes ninguna beneficio de rendimiento real con int sobre Número. Entonces, si no está usando una variable para cosas como índices de bucle o cosas que requieren incrementos exactos, el número está bien. De hecho, un Número puede ser NaN si obtiene un resultado inválido, lo cual es un buen beneficio.
- 1. ¿Son las estructuras "más rápidas" que las clases, en general o en el marco .NET?
- 2. ¿Las cargas alineadas con palabras son más rápidas que las cargas desalineadas en los procesadores x64?
- 3. ¿Por qué las aplicaciones de red basadas en eventos son inherentemente más rápidas que las enrutadas?
- 4. ¿Las entradas siempre se inicializan en 0?
- 5. ¿Son las sesiones más rápidas que consultar la base de datos?
- 6. Asegurando que las excepciones siempre son
- 7. ¿Cuáles son algunas alternativas más rápidas a Java2d?
- 8. ¿Las aplicaciones basadas en XAML de Windows 8 son notablemente más rápidas que las de HTML/CSS?
- 9. Alternativas más rápidas a cvFindContour()
- 10. ¿Las aserciones siempre son malas?
- 11. ¿Por qué las expresiones regulares compiladas de C# son más rápidas que los métodos de cadenas equivalentes?
- 12. ¿Las clases de ByteBuffer/IntBuffer/ShortBuffer Java son rápidas?
- 13. ¿Por qué las matrices NumPy son tan rápidas?
- 14. ¿Datastructuras fundamentales más rápidas en máquinas multinúcleo?
- 15. ¿No deberían las declaraciones preparadas ser mucho más rápidas?
- 16. C++ AMP con GPU rápidas más lentas que la CPU
- 17. Gramática AS3: Más precisa
- 18. Alternativas más rápidas a .Distinct()
- 19. ¿Las devoluciones de llamada son siempre asincrónicas?
- 20. Inserciones a granel más rápidas en sqlite3?
- 21. Shoulda + FactoryGirl: ¿Puedo hacer que mis pruebas sean más rápidas?
- 22. ¿Las 'lecturas' variables volátiles son tan rápidas como las lecturas normales?
- 23. Solicitudes/respuestas Ajax: ¿cómo hacerlas más rápidas?
- 24. ¿Por qué las operaciones LINQ pueden ser más rápidas que un bucle normal?
- 25. cómo usar jquery para seleccionar todas las entradas, que no son enviar, reiniciar o botón?
- 26. ¿las utilidades de línea de comando pueden ser más rápidas que C++?
- 27. Alternativas más rápidas para reemplazar el método en Java String?
- 28. ¿Alternativas más rápidas/más eficientes al Ruby's Marshal?
- 29. ¿Son los const_iterators más rápidos?
- 30. Cuando los bloques son más útiles que las funciones (ruby)?
Bueno, * obtienes * beneficios de memoria, sin embargo, un int usa 32 bits, un número usa 64 bits. – weltraumpirat
Además, desde su propia fuente vinculada, esta es la respuesta de los miembros: "' + -/*% 'son todas operaciones numéricas. Si se utilizan en una int/uint, el reproductor Flash las convertirá a un número en segundo plano y volver a refundir a int/uint una vez completada la operación. '| &^>><< > >>' (bitwize) conserva los tipos int/uint en el reproductor y están optimizados para ellos para esos tipos. " – weltraumpirat
weltraumpirat, tendría que usar MUCHAS variables para que la diferencia de dos bytes entre int y number sea un problema, pero usted es, por supuesto, correcto. :) – Almo