客户端 Javascript 与服务器端 Java 的速度有多快?

2022-09-02 19:37:10

我想知道在原始计算能力方面,客户端Javascript与服务器端Java相比有多快。

例如,排序。如果可能的话,这一切都应该在服务器端完成吗?如何循环访问集合?


答案 1

答案非常复杂,取决于每种具体情况。

服务器通常比客户端计算机强大几个数量级;托管代码通常比编写脚本快得多。

但是 - 客户端计算机通常也有很多未使用的备用计算能力,而服务器可以为数千个用户运行请求。因此,在这种情况下,可以卸载到客户端的大部分工作是可取的。

您必须了解用户对应用程序中的每个功能的需求和期望,并查看组织的相对负载与开发成本,以便在两个环境之间拆分开发并确定最有效的方法。例如,您的用户可能希望您的网站不会冻结他们的浏览器或导致不幸的“此网页正在吞噬您的计算机”对话框,因此您的客户端脚本应该智能地编写。这并不是说你不能在客户端上做很多工作(你可以),你只需要聪明地知道你是如何做到这一点的,并记住它会阻止UI线程。


答案 2

服务器端Java肯定会运行得更快,您需要针对您的特定情况进行基准测试,但您可能正在寻找10-20倍的速度优势。

然而,这可能并不重要:无论原始计算能力如何,我仍然建议尝试在Javascript中进行尽可能多的客户端计算,原因如下:

  • 即使慢20倍,用户仍然可能不注意到
  • 当您考虑客户端到服务器通信的延迟时,在客户端本地执行此操作几乎肯定会对用户做出更快的响应
  • 客户端计算机可能不受 CPU 限制,因此在它们上执行一些额外的代码实际上是免费的。
  • 如果可以将工作从服务器卸载到客户端,则需要更少的服务器端基础结构,当您需要开始扩展时,这些基础结构可能会变得昂贵。
  • 拥有大量的客户端到服务器通信可能会使您的体系结构复杂化,并使将来更难开发新功能。
  • 在客户端上进行计算通常可以降低带宽要求

当然,有充分的理由将内容保留在服务器上,例如:

  • 安全隐患(如果客户端不可信)
  • 需要非常大的数据集(下载到客户端需要太长时间)
  • 需要利用大规模并行计算(例如,用于谷歌搜索)
  • 避免需要允许客户端中的差异(例如Javascript版本)

但是,如果这些不适用,那么我会尽可能多地将事情推向客户。