Cuando asm.js es más rápido que el código JS normal, ¿por qué debería escribir un nuevo código en JS?

Emscripten podría generar código más rápido de C / C ++ que el código JS escrito por las manos, entonces ¿eso significa que deberíamos escribir un nuevo código en C / C ++ y comstackrlos para ejecutar en la Web?

Leí las Preguntas Frecuentes de Emscripten, dice "Claro, escriba un código JavaScript nuevo". ¿Por qué?

asm.js no es una forma más rápida de ejecutar código Javascript-esque. Es una forma más rápida de ejecutar código que ya está networkingucido al nivel de abstracción de código de máquina. Parece que sobreestimas mucho las ganancias:

  • Si permites que los desarrolladores de JS escriban C ++ como si fuera JS, terminas con un código fugly que no es tan rápido como C ++ y con fallas de otras maneras también.
  • Muchos cuellos de botella potenciales, como la manipulación DOM y la latencia de networking, no se ven afectados en absoluto por la velocidad con la que se ejecuta el código.
  • Para muchos progtwigs, la aceleración de una implementación de lenguaje más rápida se ve eclipsada por la aceleración de las optimizaciones de alto nivel. En otras palabras, hacer el trabajo un poco más rápido es agradable, pero no hacerlo es aún más rápido.

Ir en esta ruta también tiene desventajas significativas:

  • Tienes que descartar tu código de trabajo y volver a escribirlo (incluidos los errores) en un idioma que la mayoría de tu equipo no sabrá tan bien, en todo caso.
  • A partir de ahora, la tecnología todavía está en su infancia. No apostaría su empresa, o incluso un producto importante, por ella. Incluso si tiene éxito, siempre será una tecnología de nicho en comparación con JavaScript. Esto no lo descalifica para el trabajo profesional, pero hará que muchas cosas sean más difíciles.
  • IIUC, no se puede hacer directamente la mayoría de las cosas que JS puede hacer más allá del cálculo de numbers, solo se puede llamar a las funciones de JS ofrecidas explícitamente al module asm.js. Es decir, siempre necesitará al less un montón de código de pegamento en Javascript, y (como se mencionó anteriormente) si esto incluye sus cuellos de botella, en realidad no ganó nada.

Los únicos types de código que espero ganar lo suficiente de asm.js para usar son:

  • Código existente que aún no está escrito en JavaScript. Por el único motivo de ahorrarle la mayor parte de la molestia de porting.
  • Gran número de crujidos que no interactúan con el browser. (Piense: ¿con qué frecuencia hace esto? ¿Y realmente desea realizar el esfuerzo de escribirlo en C / C ++ y conectarlo con JS?)
  • Cosas que son, por su propia naturaleza, al nivel de abstracción que admite asm.js, como los comstackdores que emiten instrucciones de código de máquina.