El artículo se refería a las dificultades de optimización que provienen de lenguas muy dinámicos como JavaScript, además de herencia de prototipos.
En idiomas como Ruby o JavaScript, la estructura del programa puede cambiar en tiempo de ejecución. Las clases pueden obtener un nuevo método, las funciones pueden ser evaluadas (existentes) y más. Esto hace que sea más difícil para los tiempos de ejecución para optimizar su código, porque la estructura nunca se garantiza que se establezca.
La herencia de Prototypal es más difícil de optimizar que los lenguajes basados en clases más tradicionales. Sospecho que esto se debe a que hay muchos años de experiencia en investigación e implementación para máquinas virtuales basadas en clases.
Curiosamente, V8 (motor de JavaScript de Chrome) utiliza clases ocultas como parte de su estrategia de optimización. Por supuesto, JS no tiene clases, por lo que el diseño del objeto es más complicado en V8.
El diseño de objetos en V8 requiere un mínimo de 3 palabras en el encabezado. Por el contrario, Dart VM requiere solo 1 palabra en el encabezado. El tamaño y la estructura de un objeto Dart se conocen en tiempo de compilación.Esto es muy útil para los diseñadores de VM.
Otro ejemplo: en Dart, hay listas reales (también conocidas como matrices). Puede tener una lista de longitud fija, que es más fácil de optimizar que las matrices que no son realmente de JavaScript y siempre con longitudes variables.
Leer más sobre la compilación de dardo (y JavaScript) a un código eficiente con esta presentación: http://www.dartlang.org/slides/2013/04/compiling-dart-to-efficient-machine-code.pdf
dimensión Otra actuación es el tiempo de arranque. A medida que las aplicaciones web se vuelven más complejas, aumenta la cantidad de líneas de código. El diseño de JavaScript hace que sea más difícil optimizar el inicio, ya que al analizar y cargar el código también se ejecuta el código. En Dart, el lenguaje ha sido cuidadosamente diseñado para que sea rápido de analizar. Dart no ejecuta código mientras carga y analiza los archivos.
Esto también significa que las máquinas virtuales Dart pueden almacenar en caché una representación binaria de los archivos analizados (conocida como instantánea) para un inicio aún más rápido.
Puntos de referencia o no sucedió. Especular sobre el rendimiento de algo inédito es una mierda. – fijal
Lo curioso es que Dart parecía ser ** más lento ** que JS. – c69