计算机科学中的估算(reckon)

一些对于程序员可能是通识的知识点

Posted by John Young on August 1, 2017

前言

最近看了《编程珠玑》,其中第七章介绍了三个很实用的估算技巧,虽然是通用知识,但是程序员还是很可能会用到(估算运行速率之类),所以总结了一下。

1. π秒就是一个纳世纪

一年有多少秒?

这不是一个很难的问题,只需要小学知识:

365x24x60x60 = 3.1536 x 10^7

但是如果你知道”π秒就是一个纳世纪”这句话,你就不需要计算了,可以脱口而出:

3.14s = 100y * 10^-9

1y = 3.14 * 10^-7s

这只是一个经验法则,能让你更快的记住这个数字。什么情况下需要这种计算呢?大概是你想把你的程序的运行时间从秒换算成年的时候吧(笑)

2. 72法则

72法则是经济学里比较常用的一个估算工具,经常被用于估算复利。

假设最初投资金额为100元,复息年利率9%,利用“72法则”,将72除以9(增长率),得8,即需约8年时间,投资金额滚存至200元(两倍于100元),而准确需时为8.0432年。

简单来说,它的意思是:

2 ≈ 1.03 ^ 24 ≈ 1.01 ^ 72 ≈ 1.02 ^ 36 ≈ 1.06 ^ 12 ……

它是一个经验法则,将指数运算转化为了乘法运算。

这个法则个人感觉对增长型问题的估算是很有用的。例如摩尔定律,芯片性能每18个月增强一倍,那每个月增强多少呢?运用72法则,72/18 = 4%,每个月大概增强4%。

3. little定律

little定律的描述是这样的:

系统中物体的平均数量等于物体到达系统的平均速率和物体在系统中停留的平均时间的乘积

如果我们知道两个平均值,我们就能算第三个平均值。直接来做题: 其实给的图表并没有用,因为平均值都给出来了,我们运用little定律即可:

λ * 2 * 60 = 5000

λ ≈ 42