如果您必须开始考虑性能,那就麻烦了。您应该一直在考虑性能。实际上,我怀疑优秀的程序员会以“男人每隔七秒钟就考虑一次性”的方式去考虑性能,即使他们不打算这样做。
重要的是,您将根据所有这些想法采取何种行动。想法很便宜,但是行动会破坏代码并延误期限。
在大多数情况下,唯一明智的行动就是什么也不做:您发现自己的代码不会被频繁调用以至于无法观察到性能问题,也许这是一段启动代码,对于每台计算机而言,您潜在用户群的1%,也许是一小部分冗余服务器代码被缓慢的数据库访问淹没了,也许这只是代码的非关键部分中的整数分配。
通常,您怀疑给定的操作可能会导致性能问题,可以通过简单的更改来解决。例如,有些the的感觉是,对每个请求运行复杂的SQL查询,或者两次从字典中请求相同的数据片段,这对您不利。这是使用优化技术知识的地方,也许最令人惊讶的结论发生了:
如果您知道一种几乎可以肯定会提高一段代码性能的快速技术,请不要这样做。
如果您现在可以考虑一下,那么肯定可以在五分钟后完成。将其保留在代码之外(但可以在// TODO
注释中保留)可以使代码更整洁,并节省您以前的时间来使用其他功能,而如果您最终以后将该代码扔掉,则不会浪费时间。如果原始代码在测试时确实导致性能问题,请返回并应用快速技术。
我并不是在这里说您应该避免编写惯用的代码,因为它恰好更快。根据最佳实践编写惯用代码,以提高生产率和可读性并减少错误。只是,如果您在惯用的按书编写的代码和更快但更容易编写的替代方法之间进行选择,请始终追求可读性而不是速度。
唯一的困难情况是,似乎没有简单的方法可以提高代码性能,但是很痛苦的是,一段代码一旦交付就将被破坏—每次单击都会遍历完整的数据库,一百个SQL请求网站上的每页,或类似的可怕内容。这是您实际需要停下来思考的地方。这些通常是架构问题,无论如何都无法在本地解决。迅速提出建议或原型,以确认您的怀疑,寻找相似的经验和常见的解决方案,并考虑更改体系结构或删除某些功能。