我最近一直在考虑优化问题。我正在开发一个应用程序,让我思考应该在哪里处理数据,同时考虑平衡服务器负载,内存,客户端,负载,速度,大小等。
我想更好地了解经验丰富的程序员在考虑处理时如何优化代码。采取以下3个选项:
你们更喜欢哪种场合以及为什么?对于广泛的问题,对不起,如果有人可以向我推荐一些好的阅读资料,我也很感激。
答案 0 :(得分:2)
数据库是任何应用程序的核心,因此您应该尽可能轻松地加载数据库。以下是一些建议
答案 1 :(得分:2)
两个想法:计算机应该工作,人们应该思考。 (20世纪60年代的IBM广告。)
"过早优化是编程中所有邪恶(或至少大部分)的根源。" --Donald Knuth
除非您是,或计划成为Google或亚马逊或Facebook,否则您应该专注于功能。 "在你加速之前让它工作。"如果 计划增长到那么大,那就做他们做的事情:抛出问题的硬件。它更便宜,更有可能有效。
编辑添加:由于您控制服务器上的处理能力,但可能不在客户端上,因此通常最好将密集型任务放在服务器上,尤其是在客户端可能是移动设备的情况下。但是,请考虑网络延迟,带宽要求和响应时间。如果您可以通过在客户端上进行处理来缩短响应时间,那么请考虑这样做。因此,优化用户体验,而不是CPU周期;您可以在需要时购买更多CPU周期。
最后,请记住客户端不可信任。出于这个原因,必须在服务器上。
答案 2 :(得分:1)
因此,根据经验,尽可能多地处理数据库中的数据。创建新查询连接的成本非常高,因此您希望尽可能地限制它。即使您必须编写一些非常难看的SQL,执行JOIN
几乎总是比执行2 SELECT
语句更快。
PHP应该只用于格式化和缓存数据。如果您在每次请求后执行大量数据操作,则可能以不太实际的格式存储数据。您希望使用Redis或APCu之类的东西来缓存几乎没有经常更改的任何内容。
最后,客户端永远不应该在多个对象上执行数据操作。您永远不会知道客户端资源可用性,因此始终保持客户端数据的精益对后端中大于几十个的任何数据集执行分页和排序。使用AngularJS的AJAX请求通常与在iPad 2上对100多个项目执行排序一样快。
如果您想了解此答案任何方面的更多详情,请询问,我会尽力提供示例或其他详细信息。