正确地说,“触发器”是衡量处理器或系统性能的指标。许多人滥用它作为实现或算法速度的衡量标准。
假设您要执行一个计算,该计算的操作次数是固定的。例如,您想将维度为 a•b 的矩阵与维度为 b•c 的矩阵相乘。如果您以通常的方式执行此乘法,则在 a 行之一和 c 列之一的每个组合中,您执行 b 乘法和 b-1 加法。所以整个矩阵乘法需要 a•c•(2b-1) 浮点运算。如果它在一秒钟内完成,有人说它提供了 a•c•(2b-1) 翻牌。
如果您有两个程序都以相同的方式进行乘法运算,则可以使用此图对它们进行比较。其中有更多“翻牌”的人更好。尽管它们使用相同的算法,但其中一个可能有更好的实现,这可能是因为它更有效地组织了内存缓存的工作。
当有人想出一种用更少操作完成相同工作的新算法时,这种情况就会中断。然后有些人使用原始方法的名义操作数来比较程序(或例程),即使程序实际上执行的操作更少。
在某种程度上,这是有道理的。如果您有两个程序执行相同的工作,并且其中一个程序以这种方式计算的“失败”数量较多,那么该程序会更快地为您提供答案。
但是,它没有任何意义,因为它引入了不准确性。我们通常对单个问题的大小不感兴趣,而是对各种大小感兴趣,并且一旦使用新算法,程序的“失败”将不会随着标称操作数线性扩展。
以此类推,假设从A镇到B镇,经过大家都用的山路80公里。如果您的汽车需要一个小时才能完成行程,那么您的汽车每小时行驶 80 公里。一天外出探索时,您会发现一条穿越山脉的通道,可将行程缩短至 70 公里。现在您可以在 52.5 分钟内完成行程。有些人用“人字拖”做同样的计算会说你的车每小时行驶 91.4 公里,因为它在 52.5 分钟内完成了 80 公里的行程。
这显然是错误的。但是,它对于决定采取哪条路线很有用。