编程珠玑|粗略估算

本文是我编程珠玑的读书笔记, 从”粗略估算”开始吧

粗略估算这一章主要介绍了如何正确有效的进行性能估计, 掌握这个技巧, 对我们进行容量规划, 性能评估等方面有很大帮助. 书中提出的几点方法论, 可以在各行各业使用.

粗略估算中, 快速的校验方案尤为重要, 主要有两种

  1. 量纲检验: 检验等式加减法最为合适, 不考虑常数, 将原始因数进行约分, 得到量纲, 之后与常量进行运算
  2. 舍9法: 舍9法是检验加法的好办法, 将每个加数的每一位数字的和对9取模与整个和的模9 结果进行比较, 如不相等则计算必错.

估算的方法论:

  1. 经验法则:

    “72”法则: 假设以年利率r%的投资一笔钱y年, r*y=72, 那么你的投资差不多会翻倍, 适合估算指数级的增长, 比如n=40的问题, 大约需要10s, 每n增加一个运行时间就增加12%, 那么可估算n每加60, 运行时间变为原有的1000被

  2. 实践:

    估算技巧必须通过实践进行, 多结合工作生活中得场景进行估算

  3. 安全系数
  • 我们来估算实时系统性能的时候, 以 2,4,6 的系数来降低性能估计
  • 可靠性/可用性估算时, 给出一个比我们认为的目标差10倍的结果
  • 估算规模, 开销和时间进度, 给出保守2倍或者4倍的结果

Little定律:

总开销等于每个单元的开销乘以单元的个数

little定律指出: 系统中物体的平均数量等于物体离开系统的平均速率和每个物体在系统中停留的平均时间的乘积

比如去餐馆或者夜总会, 你根据Little定律可推算, 这个地方容纳60人, 每个人逗留3个小时, 因为我们进入夜总会的速率为20人/小时

如果酒窖有150箱酒, 每年喝掉25箱, 买入25箱, 每箱酒的保存时间大约多长, 150/25=6年

总结:

估算是一件很有意思也很有成就感的事情(我认为), 我小的时候就经常喜欢估算一些距离, 时间等等, 发现有的时候估计的还是挺准的, 但是读了这一章之后, 感觉又达到一种新的境界. 估算绝不是拍拍脑袋就出来的, 它是基于现有常识和一些定律, 进行运算后得到的. 总之, 粗略估算是一门神奇的工程技术