服务器排序与Android应用程序排序。哪一个更好?

时间:2016-01-03 14:46:23

标签: android performance

我需要按排序顺序(相对于属性)向用户显示卡片列表。该列表来自服务器。我应该在Android应用程序或服务器上执行排序吗?哪一个更适合性能? 假设列表的最大长度为数千。

3 个答案:

答案 0 :(得分:1)

答案取决于细节。 你有多少客户?他们经常要求这些卡? 有多少个对象要排序?

服务器通常更快, 因为它通常位于更好的硬件上。 但是,服务器处理来自许多客户端的请求, 因此,如果多个客户端要求同时进行排序,或者服务器正在执行其他重型CPU工作,则会降低它的速度。

因此,作为一般规则,我更愿意对客户进行排序。

有时候相反的决定会更好,例如只需要x最高的结果,不需要向客户端发送1百万个结果,如果只需要显示前10个...

答案 1 :(得分:1)

有趣的问题,但很难肯定回答。

有很多事情要考虑,活动中会出现多少张卡,服务器有多少处理能力(Ram / CPU),你将使用哪个数据库,是否配置正确,你是否避免不必要的加入等?

就个人而言,我选择在服务器上对 AND LIMIT 进行排序,如果您想要更改排序算法而不必将代码重新发布到市场中,这将提供最大的灵活性。我说,限制,因为移动数据非常昂贵,发送未使用的数据是一种浪费。

此外,数据库连接,排序和操作可能是昂贵的事务 - 因此,如果可能,请使用缓存。我推荐使用MemCache,易于设置,易于在PHP中使用。

答案 2 :(得分:0)

每种解决方案有很多原因。 如果您在服务器端实现排序,您将获得以下好处:

  • 能够根据新要求轻松交换算法。对于某些应用程序来说,它可能非常重要;
  • 在服务器端仅实施一次排序算法,而不是针对每个平台(在Android / iOS / WP开发的情况下)。

但是你会得到一些弊端:

  • 减慢服务器的速度(这可能很重要,但也可以解决);
  • 在应用程序中进行操作时,您应该小心不要违反完整性和秩序。

也可能不是最糟糕的解决方案是服务器返回排序类型(当然,如果应用程序可能知道所有可能的类型)并且客户端实际上进行排序。

同样,这完全取决于您和您的环境:)