在我上一个问题后,我想了解何时进行优化真正值得开发人员花时间。
为了让查询快20%,值得花费4小时吗?是、否、可能、只有当……?
“浪费”7个小时将一个任务切换到另一种语言以节省约40%的CPU使用率“值得吗”?
我的新项目的正常迭代流程是:
- 理解客户的需求及意图;
- 规划项目:使用哪些语言以及在何处,数据库设计;
- 开发项目;
- 测试和修复错误;
- 对运行项目进行最终分析和最终优化;
- 如果需要,进一步分析资源的实际使用情况并进行进一步优化;
“编写良好且易于维护的代码”是暗示。
很明显,“优化”的重头戏发生在第2点,但通常在项目结束后审核代码时,我会发现一些部分即使它们工作得很好,也可以改进。这就是第5点的理由。
为了给出最后一点的具体例子,一个简单的例子是当我预计90%的查询为SELECT
而10%为INSERT/UPDATE
时,因此我在数据库表上创建了索引。但是,6个月后,我发现实际情况是有10%的SELECT
查询和90%的INSERT/UPDATE
,因此查询速度没有优化。这是我想到的第一个例子(显然这更像是对最初错误设计的“修补”而不是优化;)。
请注意,我是一名开发人员,而不是商人,但我喜欢尽可能地给我的客户提供最好的服务以保持良心。
我的意思是,如果我花费50小时来获得应用程序总速度提升的5%,而该应用程序由10个用户使用,那么这可能不值得时间......但是什么情况下值得呢?
你认为何时进行优化至关重要?
你通常应用什么公式,知道优化所花费的时间(和最终收益)并不总是可以在纸上量化的?
编辑:抱歉,但我不能接受诸如“除非人们对 id 进行抱怨,否则不需要进行优化”之类的答案;这可能是一种商业观点(有争议,依我看),但不是一个开发者或者(依我看)一个好的回答。我知道,这个问题非常主观。
我同意Cheeso的看法,应该在分析项目的实际使用和负载后推迟性能优化,但在项目结束后可以立即进行小型且快速的优化。
感谢大家;)