我需要按排序顺序(相对于属性)向用户显示卡片列表。该列表来自服务器。我应该在Android应用程序或服务器上执行排序吗?哪一个更适合性能? 假设列表的最大长度为数千。
答案 0 :(得分:1)
答案取决于细节。 你有多少客户?他们经常要求这些卡? 有多少个对象要排序?
服务器通常更快, 因为它通常位于更好的硬件上。 但是,服务器处理来自许多客户端的请求, 因此,如果多个客户端要求同时进行排序,或者服务器正在执行其他重型CPU工作,则会降低它的速度。
因此,作为一般规则,我更愿意对客户进行排序。
有时候相反的决定会更好,例如只需要x最高的结果,不需要向客户端发送1百万个结果,如果只需要显示前10个...
答案 1 :(得分:1)
有趣的问题,但很难肯定回答。
有很多事情要考虑,活动中会出现多少张卡,服务器有多少处理能力(Ram / CPU),你将使用哪个数据库,是否配置正确,你是否避免不必要的加入等?
就个人而言,我选择在服务器上对 AND LIMIT 进行排序,如果您想要更改排序算法而不必将代码重新发布到市场中,这将提供最大的灵活性。我说,限制,因为移动数据非常昂贵,发送未使用的数据是一种浪费。
此外,数据库连接,排序和操作可能是昂贵的事务 - 因此,如果可能,请使用缓存。我推荐使用MemCache,易于设置,易于在PHP中使用。
答案 2 :(得分:0)
每种解决方案有很多原因。 如果您在服务器端实现排序,您将获得以下好处:
但是你会得到一些弊端:
也可能不是最糟糕的解决方案是服务器返回排序类型(当然,如果应用程序可能知道所有可能的类型)并且客户端实际上进行排序。
同样,这完全取决于您和您的环境:)