哪里可以更快地对集合进行排序?客户端还是服务器端

Where would it be quicker to sort a collection - client side or server side?

本文关键字:排序 客户端 服务器端 集合      更新时间:2023-09-26

我有一个关于客户端与服务器端处理的问题。

我有一个相当大的对象集合(比如说一个由日常字段namelast nameageisAdmin等组成的"用户"对象集合)

现在,我想把这个大集合分成两个小集合,其中谓词是一个布尔字段isAdmin,它告诉我们用户是否是管理员。

分离后,我需要将两个最终集合发送到服务器端,以便进行一些更复杂的处理。

我想知道在客户端进行排序和拆分(可能使用Javascript或jQuery?它会起作用吗?)或者只是将大集合发送到服务器,让它处理所有事情(使用LINQ进行拆分和进一步处理),在哪里更有效。

一般来说,在哪些情况下使用客户端比使用服务器端更好?为什么?

与往常一样,性能问题通常很难回答,因此它取决于:

  • 数据集的大小("相当大的集合"是指100还是1000000?)
  • 客户端和服务器端硬件
  • 网络延迟和传输速度

你真的需要做一些测试才能弄清楚这一点。即便如此,因为每个用户都可能在不同的电脑上,所以与2011年拥有16GB内存和最高效javascript解释器的四核电脑相比,我在2001年的老式硬件上的答案可能会有所不同。

这个问题真的没有简单的答案,因为有很多变量在起作用,比如:

  • 计算能力
  • 计算工作量
  • 各种语言的排序算法实现(记住jQuery是而不是一种语言)

可能还有其他一些事情。

过去的情况是,我们可以说服务器总是比客户端快,但现在不一定是这样了,因为强大的计算的高可用性和应用程序托管的商品化。

但除了速度,还有其他因素需要考虑,比如安全性。如果您的User对象包含敏感信息,您真的想将这些数据信任客户端的计算机吗?