2011-11-06 32 views
10

我目前正在写一个客户端JavaScript应用程序执行图像处理。它目前执行的一些操作在浏览器中运行非常缓慢(以2-3秒为单位)node.js与客户端Javascript(与Chrome/V8相比)是否具有任何性能优势?

我期望实现的一个解决方案是让客户端通过websocket从a接收结果信息服务器(websocket,而不是AJAX,因为它需要显示实时信息等),并让服务器完成图像处理的繁重工作。

Node.js是一个明显的候选人,也是用Javascript编写的 - 但我的第一个想法是没有性能优势(我的客户端在Chrome/V8中运行,而Node.js也是在V8中) - 我是否认为这是正确的?或者Chrome的用户界面是否需要在服务器端不会感觉到客户端的性能损失? (例如,Chrome是否在后台执行了更多的UI工作以保持一切响应,使得node.js服务器不会花费时间进行操作?)

node.js是否具有任何性能优势,还是我最好研究C或Java Web套接字服务器来完成这项工作?

+0

由于您已经在JavaScript中编写了代码,因此我建议您尝试一下Node.js并亲自查看。它不应该花费很多努力。 –

+0

@FelixKling尽管它已经在Javascript中了,但是它仍然需要相当多的工作来将现有的代码拆分成适当的带有websockets的客户端/服务器 - 我绝对想要找到一些性能信息。在做这样的事情之前 –

+0

Node.js不适合做图像操作的繁重工作。但它是将ImageMagick作为子进程调用的正确工具。 – generalhenry

回答

4

客户端可能是更好的地方做图像处理,如果你正在做它的JavaScript。关于客户端的好处是,你已经拥有了处理器(主要是)给自己......如果你有20个人同时进行图像处理,他们将在20台机器上完成。

显然有些地方在服务器上进行图像处理会更有意义,在这种情况下,考虑使用javascript以外的东西可能会很明智。服务器上的V8运行速度不会比客户端快得多,并且节点并非真正用于CPU密集型任务。

可能有一些有趣的情况,你需要在客户端上做交互式的东西,然后在服务器上做最后的东西,在这种情况下,节点有很大的好处,因为你可以使用相同的代码。

+0

虽然客户数量等对这个项目来说不是太重要(听起来很奇怪,我知道)我认为这最接近回答我的问题,谢谢 –

1

根据唯一的javascript执行速度,您不应该确定您将在服务器或客户端上进行计算的位置。

更重要的是您的估计客户端(台式机或移动设备),服务器容量以及估计的平均和峰值负载等。

相关问题