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

ste*_*bot 17 javascript java server-side client-side

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

例如,排序.如果可能的话,是否应该在服务器端完成?如何迭代集合?

Rex*_*x M 19

答案非常复杂,取决于具体情况.

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

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

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

  • 你也必须小心你有多少卸载到客户端...你不想让那个讨厌的浏览器弹出"这个脚本耗时太久......继续/停止脚本" (3认同)

mik*_*era 9

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

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

  • 甚至20倍的速度仍然可能对用户来说不明显
  • 当您考虑客户端到服务器通信的延迟时,在客户端本地执行它几乎肯定会对用户更敏感
  • 客户端计算机可能不受CPU限制,因此在它们上执行一些额外的代码实际上是免费的
  • 如果您可以将工作从服务器卸载到客户端,那么您将需要更少的服务器端基础结构,当您需要开始扩展时,这可能会变得昂贵
  • 拥有大量客户端到服务器的通信可能会使您的架构复杂化,并使将来开发新功能变得更加困难.
  • 在客户端上进行计算通常可以降低带宽要求

当然有很好的理由把东西放在服务器上,例如:

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

但如果这些不适用,那么我会尝试尽可能地向客户推送.


Mic*_*rdt 5

这里的最大区别不是VM的速度.不同之处在于,单个服务器必须为数十个或数百个客户端提供服务.另一个因素:到服务器的往返会增加很多开销,所以你想要最小化它们.

基本上,任何非安全关键,可以在客户机上轻松完成,在客户端上完成的.