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

时间:2010-09-02 15:23:46

标签: java javascript client-side server-side

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

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

8 个答案:

答案 0 :(得分:16)

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

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

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

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

答案 1 :(得分:8)

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

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

  • 对于用户来说,即使是20倍的速度仍然可能无法察觉
  • 当您考虑客户端到服务器通信的延迟时,在客户端本地执行此操作几乎肯定会对用户更敏感
  • 客户端计算机可能不受CPU限制,因此在其上执行一些额外的代码实际上是免费的
  • 如果您可以将工作从服务器卸载到客户端,您将需要更少的服务器端基础架构,当您需要开始扩展时,这可能会变得昂贵
  • 许多客户端与服务器之间的通信可能会使您的架构复杂化,并使将来开发新功能变得更加困难。
  • 在客户端上进行计算通常可以降低带宽要求

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

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

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

答案 2 :(得分:5)

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

基本上,任何非安全关键的东西都可以在客户端上轻松完成,应该在客户端完成。

答案 3 :(得分:4)

这两件事无法并排比较。

因素太多,而且语言差别太大,而且用途太大,无法有效地比较它们的速度。

您确实需要根据具体情况决定在何处进行计算。

如果客户端计算机需要做太多工作,会降低应用程序的性能,但如果要求服务器做太多,可能会减慢每个人的响应时间。

答案 4 :(得分:2)

Javascript足够快,可以对客户端上的数据进行排序。我已经将它用于5,000行的数据集,每行11个字段,并用它来对客户端上的表进行排序(使用分页)。这些排序使用比较函数,以便按字段和数据类型对行进行排序。这个过程的实际Javascript部分采用了几十毫秒的顺序(如果我记得的话,大约需要80个。)

我宁愿将这种平凡的任务推送到客户端,而不是用它堵塞一个非常繁忙的服务器。 YMMV。

答案 5 :(得分:2)

不要将Java与Javascript混淆 - 名称相似但它们是完全不同的语言。 Javascript是客户端,解释语言,Java是在虚拟机内运行的字节码语言,具有更多优化来处理大数据。 事实上,运行Java服务的服务器通常具有更强大的功能(更快的CPU和磁盘I / O,更多RAM),根据我的经验,Java上的计算总是更快。 如果你想计算小数据(比如只排序几百个元素),可以在客户端使用Javascript。

总而言之,您必须决定哪种方式更快:在服务器上计算和准备数据并将其传输到客户端(通过互联网传输是迄今为止最大的减速原因),或计算数据已经在客户端通过javascript。

我的建议是:如果客户端没有您想要的数据已经在客户端,那么在服务器上计算它们并将已准备好的数据传输到客户端是有意义的。但是,如果数据已经在客户端并且它们不超过几百个,则更好的用户体验是在用户的浏览器中计算它们。

答案 6 :(得分:0)

这实际上取决于您运行代码的方框,数据的大小以及处理流程的可用性以及其他因素,而且您必须考虑通过线路发送数据,而且价格昂贵。你必须平衡你要做的事情,如果最好花更多的时间处理事情,让资源免费用于重物,并播放来回发送数据。

答案 7 :(得分:0)

没有具体答案。这取决于客户的能力和计算量。它是智能手表还是智能手机?如果您不能保证客户端的功能,我将把计算工作留给服务器。