11.6
2. 测量时间
本书中涉及的软件性能测量要么是测量持续时间(两个事件之间的时间),要么是测量速
率(单位时间内事件的数量,与持续时间相对)。用于测量持续时间的工具是时钟。
所有时钟的工作原理都是周期性地计数。某些时钟的计数会表示为时、分、秒,有些则是
直接显示时标的次数。但是时钟(除了日晷外)是并不会直接测量时、分、秒的。它们只
会对时标进行计数,然后只有将时标计数值与秒基准的时钟进行比较后才能校准时钟,显
示出时、分、秒。
周期性地改变的东西受到可变性的影响也会出现误差。有些可变性是随机的,有些可变性
则是系统的。
日晷利用了地球的周期性旋转。从定义上说,一次完整的旋转是一天。地球并非完美的
时钟,不仅是因为周期太长,而且我们发现由于大陆在它表面上缓慢地移动,它的旋转
速度时快时慢(微秒级别)。这种可变性是随机的;来自月球和太阳的潮汐力会降低地
球的整体旋转速率。这种可变性是系统的。
• 老式时钟会对钟摆有规律的摆动计数。齿轮会随着钟摆驱动指针旋转来显示时间。钟摆
摆动的间隔可以手动调整,这样所显示的时间可以与地球旋转同步。钟摆摆动的周期取
决于钟摆的重量和它的长度,这样就可以根据需要让摆动得更快或是更慢。这种可变性
是系统的;而即使在最开始钟摆的摆动非常精准,但摩擦、气压和累积的灰尘都会对摆
动造成影响。这些都是随机可变性因素。
• 电子时钟使用它的交流电源的周期性的 60Hz 正弦波驱动同步电机。齿轮会下分基本振
荡和驱动指针来显示时间。电子时钟也并非完美的时钟,因为根据惯例(不是自然法
则),交流电源的周期只有 60Hz(在美国)。当负荷过高时,电力公司会先降低振荡周期,
稍后又提高振荡周期,这样电子时钟并不会走慢。所以,在炎热夏日的午后电子时钟的
一秒可能会比凉爽夜晚的一秒快(虽然我们总是对此表示怀疑)。这种可变性是随机的。
将一个为美国用户制造的电子时钟插入到欧洲 50Hz 的交流电源插座中,它会走得慢。
与气温引起的随机可变性相比,这种由欧洲电源插座引起的可变性是系统的。
• 数字腕表采用石英晶体的诱导振动作为基本振动。逻辑电路会下分基本振动并驱动时间
显示。石英晶体的振动周期取决于它的大小、温度以及加载的电压。石英晶体的大小的
影响是系统的可变性,而温度和电压的可变性则是随机的。
时标计数值肯定是一个无符号的值。不可能存在 -5 次时标。我之所以在这里提醒大家这
个看似非常明显的事实,是因为正如稍后会向大家展示的,许多开发人员实现计时函数时
选择有符号类型来表示持续时间。我不知道为什么他们这么做。我那十几岁的儿子应该会
说:“这没什么大不了。”