软件优化的原则

2018-08-27 10:07:50 +08:00
 metrxqin

请问如何权衡优化的收益和成本?

什么时候该优化? 什么时候不该优化?

3572 次点击
所在节点    程序员
26 条回复
liu233
2018-08-27 10:17:16 +08:00
我司的原则就是做出来就好,优化个锤子。
但是我的东西一般有时间就瞎捣鼓捣鼓。
4u1kto
2018-08-27 10:21:17 +08:00
楼下极有可能会有推这本书的《重构 改善既有代码的设计》
zqyisasd
2018-08-27 10:32:02 +08:00
楼上说的对
4u1kto
2018-08-27 10:37:28 +08:00
但是我水平比较次,这本书对我没用
metrxqin
2018-08-27 12:22:22 +08:00
@4u1kto 我看过这本书,它比较侧重局部、小规模的重构,但我需要的是软件设计上的优化启发式原则。就比如缓存系统,什么时候应该引入缓存,什么应该缓存,什么不应该缓存。
MeteorCat
2018-08-27 12:27:12 +08:00
先把功能实现,前期过度的优化是崩溃的开始(把后期的优化应用到前期上,堵死了后期的优化)
jpmorn
2018-08-27 12:41:38 +08:00
4u1kto
2018-08-27 12:46:02 +08:00
@metrxqin 不立足于业务谈设计都是空中楼阁,满足需求的情况下提升性能才是软件设计的最终目标。

架构不就是坑趟多了嘛。
AllOfMe
2018-08-27 13:00:58 +08:00
目的非常明确了而且很有必要,才开始优化。否则最开始乱优化,反而会导致问题的复杂度加大
FrailLove
2018-08-27 13:14:07 +08:00
找到关键点来优化 你把一个半夜运行的定时任务从 3 小时优化到 1 小时并没有什么卵用 把用户点击按钮从 3 秒优化到 1 秒意义就很大
weizhen199
2018-08-27 13:22:28 +08:00
给多少钱(工时)优化多少
Rizio
2018-08-27 14:31:03 +08:00
面向 money 优化
szq8014
2018-08-27 14:31:55 +08:00
闲得没事干的时候或者性能到瓶颈的时候
metrxqin
2018-08-27 15:08:27 +08:00
也就是说,不得不优化的时候才优化。
feng1234
2018-08-27 15:16:00 +08:00
难道不是从 sleep ( 60 )更改为 sleep ( 30 )嘛,手动斜眼
jswh
2018-08-27 15:26:32 +08:00
@metrxqin 你的这个问题其实是一个很经验化的问题,也就是要 case by case 的问题。这种优化很多时候是一种取舍,所以很难说一定做什么,一定不做什么。比如缓存的引入,一定会增加系统的复杂度,何时刷新缓存,如何刷新缓存,缓存数据和落地数据更新读取顺序等等问题,大多时候都要具体情况具体分析,很少能一概而论。

感觉这个是一个软件工程的问题,没有上过这个方面的课程,仅仅经验之谈。
wysnylc
2018-08-27 16:01:28 +08:00
先业务,再谈性能
nutting
2018-08-27 16:53:24 +08:00
先多 sleep 一会儿,客户要求的时候就好做了
rockyou12
2018-08-27 17:05:29 +08:00
没有性能问题,就不要优化。

其实可以很简单的考虑,不管是谁写,代码写得越多,错得越多,所以首先代码越少,bug 就越少。优化什么的除非开始就可以预见会有性能问题,不然就不要考虑。
scmod
2018-08-27 17:13:03 +08:00
先实现功能吧,免得需求变来变去最后白搞,一般加上 TODO:之类的以后有必要时候提示下自己就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/483520

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX