为什么比较运算符如此快速

why comparisons operators are so quick?

本文关键字:比较 运算符 为什么      更新时间:2023-10-16

根据Alexandrescu的文章https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920/

操作的速度层次结构为:

  1. 比较
  2. (u( int加法、减法、位运算、移位
  3. 浮点加法,sub(单独的单元!(
  4. 索引数组访问(注意:缓存效果(
  5. (u( int32 mul
  6. FP mul
  7. FP除法,余数
  8. (u( int除法,余数

我不明白为什么比较这么快。

如何快速比较两个大数字?算法是什么?

这些比较很快,因为它们很容易。这篇文章讨论的是数值的比较。通常,它们分为两种类型:将一个整数与同一格式的另一个整数进行比较,以及比较两个浮点数。

在整数比较的情况下,使用的整数格式可以以非常简单的方式比较两个值,以特定的顺序查看特定的位(符号位、高阶位,然后是低阶位(。

在浮点数的情况下,绝大多数值将以归一化形式表示,因此您可以按顺序进行比较:

  • 对应的符号位,则如果它们相等
  • 相应的指数,如果它们相等
  • 对应的尾数(高位到低位,按位(

这些类型的比较在通用处理器中非常常见和重要,因此它们将针对速度进行优化。