Llegamos a ustedes gracias a:



Noticias

Mozilla ofrece a WebAssembly una mejora en el paralelismo

[27/04/2016] Mozilla está mejorando la compilación tanto en el formato bytecode portable de WebAssembly, como en el subconjunto asm.js de JavaScript aprovechando la paralelización en su navegador Firefox.

Mediante el uso del paralelismo, un ingeniero de Mozilla trabajó en la reducción de los tiempos de inicio en programas asm.js en el navegador. "Al igual que nuestro motor de JavaScript, SpiderMonkey, utiliza el mismo pipeline de compilación tanto para asm.js como para WebAssembly, esto también benefició a la compilación WebAssembly, afirmó el ingeniero, Benjamin Bouvier.

La paralelización, afirmó, consiste en dividir un programa secuencial en tareas independientes más pequeñas y, luego, ejecutarlas en diferentes CPUs. "Si su programa está utilizando N núcleos, puede ser hasta N veces más rápido.

La meta de Mozilla es hacer que más trabajos se ejecuten en paralelo sacando del hilo principal la middle-level intermediate representation (MIR) de SpiderMonkey, así como retirando y generación de código. "En lugar de emitir un gráfico MIR a medida que analizamos el cuerpo de la función, emitimos una representación pequeña, compacta y de prepedido del cuerpo de la función, afirmó Bouvier. "En resumen, una nueva IR. Como el trabajo se inició a partir de WebAssembly (wasm) en este momento, y como la semántica de asm.js y la de wasm coinciden en su mayoría, la IR podría ser la codificación de wasm, la cual está conformada por los opcodes de wasm más algunos específicos de asm.js. Luego, wasm se traduce a MIR en otro hilo. En lugar de analizar y generar MIR en una sola pasada, la IR de wasm es analizada y generada en un solo paso, mientras que el MIR se generaría fuera de la IR de wasm en otro paso.

Aunque Mozilla ha logrado una compilación mucho más rápida en su nuevo esquema, todavía puede ser un proceso doloroso, especialmente en aplicaciones móviles, de acuerdo a Bouvier. "Esto se debe en su mayor parte al hecho de que estamos ejecutando todo un código base de miles de millones de líneas a través del back end de un compilador para generar código optimizado, afirmó. "Luego de este trabajo, el siguiente cuello de botella durante el proceso de compilación es el análisis, qué es importante para asm.js en particular, cuya fuente es el texto plano. Sin embargo, descifrar WebAssembly es un orden de magnitud más rápido, y puede hacerse incluso más rápido. Se vienen más optimizaciones del tiempo de carga, afirmó Bouvier.

WebAssembly es un intento muy promocionado para mejorar el rendimiento de la Web a través de un formato de código portable que se ejecuta en los navegadores a velocidades nativas. Ha sido apoyado por proveedores de navegador como Mozilla, Google, Microsoft y Apple.

Paul Krill, InfoWorld (EE.UU.)