第67条 谨慎地进行优化
- 不要因为性能而牺牲合理的结构,要努力编写好的程序而不是快的程序
- 对于API的设计要在设计时候就考虑性能,这些API在后续很难甚至不可以改变
- 要考虑API设计决策的性能后果
- 可以用复合的场景如果使用了继承,则父类子类就捆绑在了一起。日后如果有了性能更好的实现也不方便替换
- 在代码里直接依赖了具体实现类而不是接口,如果有性能更佳的实现也不方便替换
- ...
- 在每次试图做优化之前和之后,要对性能进行测试
- 性能剖析工具有助于你决定应该把优化的重心放在哪里
思考
- 以前在写代码的时候经常会特别考虑性能,后来发现很多的担心都是没有必要的,Java的运行速度并不需要太担心,不是特别明显的复杂度,执行速度都是相对快的
- 很多时候我们想要优化速度,第一反应都会是多线程。其实在真正优化前还是需要仔细研究下任务之间是否真的独立、每个任务的执行时间是不是差不多相同的(至少相差不能太大)、是IO慢还是计算慢等等。未来Java的新特性中将引入类似协程的内容,对于我们的优化又将是一个新的思路