¿Es posible ejecutar código JavaScript en paralelo en el navegador? Estoy dispuesto a sacrificar algo de soporte de navegador (IE, Opera, cualquier otra cosa) para obtener algo de ventaja aquí.Código de JavaScript paralelo
Respuesta
Si usted no tiene que manipular el DOM, se puede usar webworkers ... Hay algunas otras restricciones, pero echa un vistazo @http://ejohn.org/blog/web-workers/
Hmmm. Aunque parece perfecto, estoy interactuando con un elemento 'canvas'. Probablemente no funcionará con eso, ¿estoy en lo correcto? –
Creo que actualizar un nodo canvas es lo mismo que interactuar con el DOM. Pero nunca está de más probar. –
Puede utilizar sus trabajadores web para enviar mensajes de control que luego se interpretan para cambiar el DOM, simplemente no hay acceso directo. – JKirchartz
Tal vez sería mejor volver a codificar su código JavaScript en algo que por lo general funciona más rápido, en lugar de tratar de acelerar el Javascript yendo en paralelo. (Espero que encuentre que el costo de bifurcar las actividades paralelas de JavaScript es bastante alto, y eso puede anular cualquier ganancia paralela posible, este es un problema común con la programación paralela).
Javascript se interpreta en la mayoría de los navegadores IIRC, y es dinámico en la parte superior, lo que significa que, bueno, se ejecuta lentamente.
Tengo la impresión de que puede escribir código Java y ejecutarlo en los complementos del navegador. Java es tipo seguro y JIT compila código máquina. Esperaría que cualquier gran computación hecha en Javascript fuera mucho más rápida en Java. No estoy sugiriendo específicamente Java; cualquier lenguaje compilado para el que pueda obtener un complemento lo haría.
Como alternativa, Google proporciona Closure, a JavaScript compiler. Es afirmado para ser un compilador, pero se parece a un optimizador para mí y no sé mucho "optimiza". Pero, quizás puedas usar eso. Esperaría que el compilador de Closure se construyera en Chrome (pero no lo sé con certeza) y tal vez simplemente al ejecutar Chrome tu compilador de JavaScript sería "gratis".
EDIT: Después de leer acerca de Closure, como compilador, no estoy muy impresionado. Parece que gran parte del énfasis está en reducir el tamaño del código, lo que minimiza el tiempo de descarga, pero no necesariamente el rendimiento. Lo único bueno que hacen en la función es en línea. Dudo que eso ayude tanto como cambiar a un lenguaje realmente compilado.
EDIT2: Aparentemente el compilador "Closure" es diferente del motor que ejecuta JavaScript en Chrome. Me dijeron, pero no lo sé, que el motor Chrome tiene un compilador real.
Compila JavaScript en JavaScript, optimizando en el camino (funciones de alineación, etc.).Consulte [las preguntas frecuentes] (http://code.google.com/closure/compiler/faq.html#how-different). Me preocupa que esté haciendo grandes suposiciones sobre cómo se compara el rendimiento de JavaScript con Java, por ejemplo, el motor JavaScript de WebKit usa un compilador JIT, y si Java es apropiado para el caso de uso del OP. – s4y
Java * no * se ejecuta más rápido en un navegador que JavaScript. No solo es lento y torpe codificar (para una aplicación web) sino que limita severamente la interacción con el DOM a menos que toda la página sea un applet. Cualquier gran computación * podría * hacerse en Java, sin embargo, no tengo cálculos realmente grandes. Me gustaría hacer una operación paralela en un [proyecto de mascota en el que estoy trabajando] (http://joshuakehn.com/blog/static/sort.html) cuyo objetivo es no tener necesidad de un complemento de navegador u otro externo lib. –
@Sidnicious: sí, me di cuenta de que era JavaScript -> JavaScript, y por eso lo llamé un "optimizador". Sugerí que existía un compilador real (tal vez en Chrome); me alegra saber que hay otro de WebKit. Habiendo dicho eso, el modelo de datos de Java y los accesos en mi humilde opinión están más cerca de las máquinas reales que JavaScript y me sorprendería mucho si los cálculos idénticos compilados por Java JIT con el equipo de Sun/IBM fueran más lentos que Webkit o cualquier otro JavaScript "compilado". OP no especificó lo que estaba haciendo, solo que era lento, y uno asume como predeterminado que es computación. –
Intel es dar con un proyecto de código abierto con nombre en código River Trail
la salida http://www.theregister.co.uk/2011/09/17/intel_parallel_javascript/
Parallel.js tiene una buena API para procesamiento multihilo en Javascript. Funciona tanto en navegadores web como en nodo.
- 1. OpenMP - Ejecución de código paralelo dentro de código paralelo
- 2. ¿Cómo escribo tareas? (código paralelo)
- 3. paralelo código C para cálculo de distancia
- 4. ¿Cómo escribir código paralelo con vectores Haskell?
- 5. En un código paralelo OpenMP, ¿habría algún beneficio para memset para ejecutarse en paralelo?
- 6. ¿Cómo activar dos funciones de JavaScript en paralelo?
- 7. Microsoft dice IE9 tiene paralelo Javascript Representación y Ejecución
- 8. omp paralelo vs. omp paralelo para
- 9. Crear un código existente en Java paralelo/multiproceso
- 10. ¿Cómo se define la escalabilidad para el código paralelo?
- 11. C# Paralelo vs. Ejecución del código con subprocesos
- 12. ¿Cómo explotar cualquier paralelismo en mi código paralelo haskell?
- 13. Compresión de código JavaScript
- 14. Paralelo de un bucle for
- 15. Java procesamiento de archivos paralelo
- 16. Procesamiento paralelo en python
- 17. OpenMP paralelo bucles for anidados vs paralelo interno para
- 18. php run código de JavaScript
- 19. Organizando el código javascript
- 20. Subproceso de Python en paralelo
- 21. Problemas de programación en paralelo
- 22. iterador de trabajo paralelo Java?
- 23. Instalación en paralelo de Pip
- 24. parallelsort paralelo en c
- 25. Ejecutando funciones en paralelo
- 26. Procesamiento paralelo en Linux
- 27. Código de JavaScript Sugerencias de organización/Revisión de código
- 28. código de clave de Javascript =/= código de char
- 29. Cómo hacer un compilador paralelo para .NET
- 30. Evaluación de celdas en paralelo en Mathematica
Er, si está dispuesto a sacrificar la compatibilidad, ¿por qué no puede implementar su programa en algo que se ejecuta más rápido que JavaScript y ejecutar eso? –
@Ira: ¿Tienes algo en mente? –
Comencé a responder a su comentario y decidí convertirlo en una respuesta. –