Node.js相对于客户端JavaScript(如Chrome/V8)有什么性能优势吗?

10

我正在编写一个客户端的JavaScript应用程序,它执行图像操作。其中一些操作目前在浏览器中运行速度比较慢(需要2-3秒)。

我正在寻求的解决方案之一是通过websocket从服务器接收结果信息(使用websocket而不是AJAX,因为它需要实时显示信息等),并让服务器完成图像处理的重活。

Node.js是一个显而易见的选择,因为它也是用JavaScript编写的 - 但我的第一想法是在性能方面没有优势(我的客户端正在Chrome/V8中运行,而Node.js也是V8) - 我的想法正确吗?还是Chrome的UI会导致客户端性能损失,但服务器端不会感受到?(例如,Chrome是否会在后台做更多UI工作以保持响应性,而Node.js服务器不会花时间做这些工作?)

Node.js会有任何性能优势吗,还是我最好考虑使用C或Java websocket服务器来完成工作?


既然您已经用 JavaScript 写了代码,我建议您尝试一下 Node.js 并自行体验一下。这并不需要花费太多的精力。 - Felix Kling
@FelixKling 尽管如你所说,它已经是Javascript,但仍需要相当多的工作来将现有代码分割成适当的客户端/服务器结构,并使用WebSockets - 在执行这样的操作之前,我一定要找到一些性能信息。 - David Roberts
Node.js 不是进行图像处理重活的正确场所。但是它是调用 ImageMagick 作为子进程的正确工具。 - generalhenry
2个回答

4

如果你在JavaScript中进行图像处理,客户端可能是更好的地方。客户端的好处在于你可以(大部分时间)独占处理器...如果有20个人同时进行图像处理,他们将在20台机器上进行。

显然,在某些情况下,在服务器上进行图像处理更加合理,在这种情况下,考虑使用其他东西而不是JavaScript可能是明智的选择。服务器上的V8并不比客户端运行得更快,而且Node并不适用于CPU密集型任务。

可能存在一些有趣的情况,你会想在客户端进行交互式操作,然后在服务器上完成最终操作,在这种情况下,使用Node具有很大的优势,因为可以使用相同的代码。


虽然客户数量等并不是这个项目的重点(我知道这听起来很奇怪),但我认为这最接近回答我的问题了,谢谢。 - David Roberts

1

你不应该仅基于 JavaScript 执行速度来确定计算是在服务器端还是客户端进行。

更重要的是,需要考虑诸如预计客户端(桌面或移动设备)、服务器容量以及预计的平均和峰值负载等因素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接