Si por alguna razón hacer el cálculo de la materia intensiva en javascript, debe recordar esas cosas (* y leer de David Mandelin Sepa sus motores: Cómo hacer que su JavaScript rápida presentación - PDF, donde describe esto con más detalles *):
en línea todo lo que pueda.
llamadas a funciones son muy caros
acceso a objetos es caro
polimorfismo puede costar rendimiento, sus variables y argumentos debe sujetarse siempre sólo un tipo de datos.
objeto Math no es especialmente lento, pero que no encontrará distance()
función allí de todos modos, y acceder a sus métodos de cierre a través de las llamadas es Math.method()
, ineficiente.
por lo sqrt
es, por supuesto, peor que x*x
, a medida random
función podría ser mejor para usted, Pi debe almacenar en caché en los bucles, min
y max
probablemente se debe evitar, así, ninguna idea acerca de la trigonometría y logaritmos de velocidad .
P.S .: Puede hacer cosas como ((x >= 0 ? x : -x) + 0.5) >> 0
, para reemplazar Math.ceil(Math.abs())
, pero recuerda - cuando digo "intensivo" - estoy hablando de procesamiento de números, procesamiento de datos, la física, gráficos y cosas por el estilo. Para sitios normales de JavaScript o RIA, usted no debe hacer cosas que estoy sugiriendo aquí. Además, la mayoría de los hacks de velocidad tienen su side effects
Probablemente los métodos 'Math' se implementan en el lenguaje en el que javascript está implementado (es decir, C o C++ en un navegador típico) por lo que son mucho más rápidos que lo que puede escribir en Javascript –
¿Ha ** medido ** diferencia en el rendimiento? ¿A través de todos tus navegadores objetivo? –
Bueno 'Math' no tiene un método de" distancia ", y esa conversión entera puede ser más rápida pero también es semánticamente diferente de' Math.floor() 'o' Math.round() '. Puede usar [jsperf] (jsperf.com) para probar este tipo de cosas. – Pointy