我目前正在编写一个执行图像处理的客户端JavaScript应用程序。它目前执行的一些操作在浏览器中运行速度很慢(按2-3秒的顺序)
我想要实现的一个解决方案是让客户端通过来自服务器的websocket接收结果信息(websocket而不是AJAX,因为它需要显示实时信息等)并让服务器完成繁重的工作。图像处理
Node.js是一个明显的候选人,也是用Javascript编写的 - 但我首先想到的是没有性能优势(我的客户端在Chrome / V8上运行,Node.js也是V8) - 我是否正确在想这个?或者Chrome的用户界面是否需要客户端的性能损失,这在服务器端是不会感觉到的? (例如,Chrome会在后台执行更多UI工作,以保持node.js服务器不会花时间做出响应吗?)
node.js是否具有任何性能优势,或者我最好不要考虑使用C或Java Web套接字服务器来完成这项工作?
答案 0 :(得分:4)
如果您在javascript中执行此操作,客户端可能是更好的图像处理位置。关于客户端的好处是你自己拥有处理器(主要是)...如果你有20个人同时进行图像处理,他们将在20台机器上进行处理。
显然有些地方在服务器上进行图像处理更有意义,在这些情况下,考虑使用除javascript之外的其他东西可能是明智之举。服务器上的V8运行速度不会比客户端上的运行速度快得多,并且节点实际上并不适用于CPU密集型任务。
可能有一些有趣的案例,你想要在客户端上做交互式的东西,然后在服务器上做最后的东西,在这种情况下,节点有一个很大的优势,因为你可以使用相同的代码。
答案 1 :(得分:1)
根据唯一的javascript执行速度,您不应该确定在服务器或客户端上进行计算的位置。
更重要的是像您估计的客户端(桌面或移动设备),服务器容量以及估计的平均和峰值负载。