¿Hay algún buen tutorial sobre cómo escribir código rápido y eficiente para v8 (específicamente, para node.js)?Exprimir el rendimiento de v8
¿Qué estructuras debo evitar usar? ¿Cuáles son los modismos que v8 optimiza bien?
¿Hay algún buen tutorial sobre cómo escribir código rápido y eficiente para v8 (específicamente, para node.js)?Exprimir el rendimiento de v8
¿Qué estructuras debo evitar usar? ¿Cuáles son los modismos que v8 optimiza bien?
Desde mi experiencia:
.bind()
es realmente lenta en V8 en el momentonew Object()
y new Array()
son un poco más rápido actualmente (MICROoptimization, a menos que usted está escribiendo un poco de palo de codificador loco con {}
y []
)Mis reglas:
Si usted es un experto JS y de su ya aplicar todas good practices a su código, hay casi nada que puedas hacer para mejorar el rendimiento.
Si se encuentra con problemas de rendimiento:
Gracias - Javascript Garden se ve increíble :) – nornagon
Esta es una publicación anterior, pero recientemente me encontré con un buen video (de Google IO 2012) sobre la cosa exacta. Fue publicado en 2012, así que las cosas han cambiado un poco, pero supongo que no mucho: http://youtu.be/UJPdhx5zTaw – Pijusn
Los documentos dan una gran respuesta: http://code.google.com/apis/v8/design.html
Los documentos no son suficientes. por ejemplo: ¿V8 hace inline? ¿Qué tan caro es una llamada a función? ¿Qué tan caro es crear un objeto? Quiero saber cuán inteligente es v8 en una amplia variedad de casos, no solo en los accesos a propiedades. – nornagon
Understanding V8 es un conjunto de diapositivas de ninguna decamp.eu y da algunos consejos interesantes. En particular, encontré que las notas sobre cómo evitar el "modo diccionario" son útiles, es decir, ayuda si mantiene constante la "forma" de los objetos y no les agrega propiedades arbitrarias.
También debe ejecutar el nodo con --crankshaft --trace-opt --trace-bailout
(el --crankshaft
solo se necesita en plataformas de 64 bits, por ejemplo, OS X) para ver si V8 está "rescatando" al JIT ciertas funciones. Hay un montón de otras opciones de rastreo, incluido --trace-gc
y varios otros métodos de seguimiento de GC, que pueden ser útiles para la optimización.
Avíseme si tiene alguna pregunta específica sobre las diapositivas anteriores ya que son un tanto concisas. :-) No son míos, pero investigué un poco sobre las áreas que cubren.
Simplemente curioso, pero ¿por qué estás preguntando? ¿No debería estar más preocupado por exprimir el rendimiento de los motores de renderizado más lentos (pero ampliamente utilizados) que el más rápido? Parece que el más rápido se ocupará de sí mismo. – mVChr
Solo quiero saber lo que a v8 no le gusta. El código eficiente me importa. – nornagon
Buena respuesta nornagon: es increíblemente frustrante cuando la pregunta es indiferente y las respuestas no están relacionadas. ¡Yo también estoy interesado simplemente por los intereses! –