《How to be a Programmer》读书笔记——性能问题

性能问题

性能的好坏一般体现在系统运行所产生的开销。客户需要或市场竞争使得我们需要提高系统的性能,但是如何把系统变快呢?首先我们必须去弄清楚真正花费时间或资源的地方。

90%的时间会花费在10%的代码上。

文中提到“通常大部分时间是以某种形式花费在I/O上。” 我们可以从发现这些昂贵的I/O和这些10%的代码开始去构建一个关于时间消耗的思维模型(图表工具或日志)。

计算机系统的性能有很多个维度。

执行程序的所有时间为“挂钟时间”,即执行程序的所有时间。处理器时间可以帮助你发现那些多花费一点点时间的东西,然而,真实要处理的计算机环境中,如内存,网络带宽,数据库或是其他服务器访问,这些可能最后会花费比处理器更加昂贵的时间。

死锁和互斥:导致这两种情况的原因是共享的资源的竞争。

死锁是由于不恰当的同步和请求资源导致线程执行能力的丧失。
互斥是对于资源访问的不恰当安排。

为避免出现线程资源争抢情况,应该提前对其采取防范措施。

修复性能问题

提高一个非常复杂的性能的关键是,充分分析它,来发现其“瓶颈”,或者其资源耗费的情况。
一个简要的原则是,你在做任何事情之前必须仔细思考。

修复性能问题时,考虑修改会带来的测试以及其是否能够保证工作需要和质量,这个修改最好能带来较大的性能提升。在攻克一个问题取得效果后,我们需要考虑重新分析,发现下一个瓶颈(从较容易发现的问题入手,再进行深入分析)。

在考虑继续优化,你可能会希望重构整个系统或某个子系统,然而在此之前,我们应该思考是否这个建议会让系统的性能提升5到10倍!(不要轻易重构系统)

思考: 在实际解决一个问题之前,不管是什么问题,一定要充分思考问题所在,解决问题的必要性和可行性,以及解决问题时不要引入新的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值