impresión WebAssembly temprana

10/11/2018 11:35:56

JavaScript ha estado teniendo una posición dominante en la programación web, la página web en el curso de la evolución, la mejora del rendimiento de JavaScript se ha sometido a una reforma continua.
Originalmente era la velocidad de ejecución no es rápido, en el que una proporción relativamente grande punto de inflexión en 2008, muchos navegadores para introducir Just-In-Time (JIT, se mencionará más adelante en el artículo) compilador, lo que mejora la eficiencia de la ejecución de código JavaScript sino que también permite JavaScript puede ser usado para iniciar en el campo de fondo.

Con un contenido web enriquecido para lograr la página en los juegos en 3D, procesamiento de audio y video ha sido cada vez más atención, pero la manera de proporcionar una mejor sensación de velocidad y experiencia en la página web es siempre un desafío.
JavaScript como un lenguaje de tipos débiles, la lógica en el extremo delantero de la creciente fuerza de la colaboración entre la necesidad de más restricciones a mejores programadores de ayuda.
Así que ha habido algunos problemas al tratar de resolver:

  1. La sintaxis es demasiado flexible.
  2. Rendimiento.

La sintaxis es demasiado flexible

Para en este punto, que apareció en el mercado de mecanografiado, para unirse a JS comprobación de tipo estático.
Pero esto finalmente se compila en JS, no mejoró el rendimiento.

Solución de 曾经 决 方 método

  • Google ha desarrollado Dart, al navegador introdujo una nueva máquina virtual para ejecutar directamente el programa de dardo para mejorar el rendimiento, pero sólo el navegador de Google, no muchas personas lo utilizan.
  • Firefox lanzó asm.js, es un subconjunto de JS, deje que el motor haga asm.js para la optimización del rendimiento. asm.js demasiado simple sintaxis, restricciones y más.

¿Cuál es WebAssembly

WebAssembly es un nuevo formato de código de bytes .
Se requiere JS y realizar interpretación diferente, y el código de la máquina subyacente bytecode webassembly muy similar, rápido operación de carga, por lo tanto el rendimiento con respecto a la JS interpretada mucho mayor.
lenguajes de programación de alto nivel compilar el código de bytes en la máquina virtual para ejecutar WebAssembly, proveedores de navegadores tienen que hacer es poner en práctica una máquina virtual de acuerdo con la especificación WebAssembly.
Porque muy cerca de código de máquina, que muy rápidamente se puede traducir en código máquina correspondiente a la arquitectura.

优点 de WebAssembly

  • Tamaño pequeño.
    navegador carga sólo el código compilado, la lógica que con el mismo volumen de JS mucho más pequeño.
  • Carga rápida.
    Tamaño pequeño, no hay necesidad de explicar la aplicación.
  • Menos problemas de compatibilidad.
    WebAssembly desarrollarse después de unos cuantos cambios. problemas de compatibilidad locales que puedan surgir especificación de interfaz JS y WebAssembly puente.

¿Por qué es más rápido que JavaScript?

En primer lugar, el tiempo consumido para ejecutar JavaScript tiene las siguientes tareas:

  1. Análisis sintáctico: Código → código fuente intérprete puede correr el tiempo pasado;
  2. Compilar + optimización: compilador de línea de base y la optimización del compilador tiempo dedicado (PS: Algunos compiladores de optimización no es el principal hilo conductor, que no está incluido)
  3. Re-optimización: JIT encontrar los errores de hipótesis optimizados, descarta la optimización de código de tiempo gastado. Incluyendo la optimización de peso del tiempo, abandonado y vuelto al compilador de línea de base de tiempo.
  4. Tiempo de ejecución de código: Ejecución
  5. La recolección de basura: la recolección de basura, limpieza de la memoria de las veces
    estas tareas son realizadas por la cruz, como el proceso de resolución en curso cuando algún otro código se ejecuta, mientras que otros están siendo compilados.

Estas etapas no de acuerdo con el orden, hay una parte del código puede estar en fase, algunos pueden en la etapa 3, y similares. Esta ley es lo que llevó JIT, también a causa de esto, la eficiencia JS que ha mejorado.
Incluso el propio código WebAssembly intermedia, no es como el código JS como árbol de sintaxis abstracta luego se descompone a convertir. Antes del comienzo del código se compila optimizado, no es necesario conocer el tipo.
Y JIT hacer diferentes compiladores diferentes procesos de optimización, por lo que una pieza de código podría correr rápidamente en Google Chrome, pero en otros navegadores no tan rápido, pero WebAssembly en este momento han experimentado el proceso de optimización , se puede omitir este momento optimización. En la recolección de basura, WebAssembly está diseñado para permitir a los desarrolladores a escribir código para recuperar manualmente, el navegador se recupera automáticamente de forma predeterminada, lo que a veces, de hecho, no hay necesidad de comprobar.

WebAssembly puede ser compilado en un lenguaje de alto nivel

Actualmente WebAssembly puede compilarse en un lenguaje de alto nivel son:

  • AssemblyScript
    gramática y mecanografiado consistente.
  • c \ c ++
    manera oficial recomendada.
  • Oxidarse
    complejidad gramatical.
  • Kotlin
    sintaxis y Java, JS similar.
  • Golang:
    La sintaxis es simple. Para WebAssembly aún no publicado oficialmente por etapas.

Las perspectivas de WebAssembly

En resumen, WebAssembly es ideal para la escena requiere una gran cantidad de computación:

  • El procesamiento de audio y vídeo en el navegador.
  • diff Dom con WebAssembly reescritura puede mejorar el rendimiento. RN del rendimiento de las aplicaciones puede ser mejorado.
  • Grandes juegos de la web 3D (garcetas motor ha comenzado a explorar el uso WebAssembly).

epílogo

Esta conclusión es que integrar una serie de artículos e información en línea y por escrito, para su estudio y referencia, gracias.

Supongo que te gusta

Origin www.cnblogs.com/rimochiko/p/12640975.html
Recomendado
Clasificación