V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
metrxqin
V2EX  ›  程序员

软件优化的原则

  •  
  •   metrxqin · 2018-08-27 10:07:50 +08:00 · 3581 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    其实可以很简单的考虑,不管是谁写,代码写得越多,错得越多,所以首先代码越少,bug 就越少。优化什么的除非开始就可以预见会有性能问题,不然就不要考虑。
    scmod
        20
    scmod  
       2018-08-27 17:13:03 +08:00
    先实现功能吧,免得需求变来变去最后白搞,一般加上 TODO:之类的以后有必要时候提示下自己就好了
    shangshicc
        21
    shangshicc  
       2018-08-27 18:07:28 +08:00   ❤️ 1
    1.实现功能,最基本的要做到不要有重复代码
    2.是否做性能优化要看是否有性能瓶颈,是否做代码的结构优化主要看你是否对于当前的代码足够满意,或者说你自己能不能看懂,有没有觉得维护性好,如果每次添加新功能时觉得整体设计不合理的话就要修改设计。
    noNOno
        22
    noNOno  
       2018-08-27 18:29:57 +08:00
    sunsulei
        23
    sunsulei  
       2018-08-27 18:43:21 +08:00 via iPhone
    我所接触到的优化
    先加带宽 - 换 SSD - 内存翻倍 - 加个服务器负载
    还不行 上面再来一遍
    lance7in
        24
    lance7in  
       2018-08-27 19:28:49 +08:00
    看工资
    30K 就做 30K 级别的优化
    80K 就做 80K 级别的优化
    xuanbg
        25
    xuanbg  
       2018-08-28 07:36:47 +08:00
    先实现功能,然后有时间就优化,没时间就挤出时间来优化。

    只有通过优化代码,才能让自己的能力不断提高。
    hanxiV2EX
        26
    hanxiV2EX  
       2018-08-28 08:26:15 +08:00 via Android
    优化?不可能的,最多把代码整好看点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2777 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.