2011-11-06 8 views
10

Actualmente estoy escribiendo una aplicación de JavaScript del lado del cliente que realiza la manipulación de la imagen. Algunas de las operaciones que realiza actualmente son bastante lentas para ejecutarse en el navegador (en el orden de 2-3 segundos)¿Tiene node.js alguna ventaja de rendimiento sobre el Javascript del lado del cliente (frente a Chrome/V8)?

Una solución que estoy buscando implementar es hacer que el cliente reciba información de resultados a través de un websocket de un servidor (websocket en lugar de AJAX porque necesita mostrar información en tiempo real, etc.) y hacer que el servidor haga el trabajo pesado de manipulación de imágenes

Node.js es un candidato obvio que también está escrito en Javascript, sin embargo mi primer pensamiento es que no habrá ventaja de rendimiento (mi cliente se está ejecutando en Chrome/V8 y Node.js también es V8) - ¿estoy en lo correcto al pensar esto? ¿O la interfaz de usuario de Chrome requiere pérdidas de rendimiento en el cliente que no se sentirán en el lado del servidor? (p. ej., ¿hace Chrome más UI en segundo plano para que todo responda mejor que un servidor node.js no gasta su tiempo haciendo?)

¿No tendrá ninguna ventaja de rendimiento node.js, o estoy mejor? buscando en los servidores de socket web C o Java para hacer el trabajo?

+0

Como ya escribió el código en JavaScript, le sugiero que pruebe Node.js y compruébelo usted mismo. No debería tomar tanto esfuerzo. –

+0

@FelixKling Aunque ya está en Javascript como dices, aún tomará bastante trabajo dividir el código existente en el cliente/servidor adecuado con websockets. Definitivamente quiero encontrar información de rendimiento. antes de hacer tal cosa –

+0

Node.js no es el lugar correcto para hacer el trabajo pesado de manipulación de imágenes. Pero es la herramienta adecuada para llamar a ImageMagick como un proceso secundario. – generalhenry

Respuesta

4

El cliente es probablemente el mejor lugar para manipular la imagen si lo hace en javascript. Lo bueno del cliente es que tienes el procesador (en su mayoría) para ti ... si tienes 20 personas haciendo manipulación de imágenes a la vez, lo harán en 20 máquinas.

Obviamente, hay algunos lugares donde tiene más sentido hacer manipulación de imágenes en el servidor, y en esos casos, puede ser inteligente considerar el uso de otras cosas que no sean javascript. V8 en el servidor no se ejecutará mucho más rápido que en el cliente, y el nodo realmente no está hecho para tareas intensivas de CPU.

Probablemente haya algunos casos interesantes en los que desearás hacer cosas interactivas en el cliente, y luego hacer lo último en el servidor, y en ese caso hay una gran ventaja para el nodo, ya que puedes usar el mismo código

+0

Aunque la cantidad de clientes, etc. no es demasiado importante para este proyecto (suena raro, lo sé) creo que esto es lo más cercano a responder mi pregunta, gracias –

1

No debe determinar dónde realizará los cálculos en el servidor o el cliente, en función de la velocidad única de ejecución de javascript.

Mucho más importante son cosas como sus clientes estimados (de escritorio o móviles), la capacidad del servidor y el promedio estimado y la carga máxima.

Cuestiones relacionadas