为什么比较运算符这么快?

时间:2018-11-03 16:29:53

标签: c++ c algorithm

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

  

操作的速度层次为:

     
      
  1. 比较
  2.   
  3. (u)int加,减,位,移位
  4.   
  5. 浮点数加,子(单独的单位!)
  6.   
  7. 索引数组访问(注意:缓存效果)
  8.   
  9. (u)int32 mul
  10.   
  11. FP mul
  12.   
  13. FP部门,余下
  14.   
  15. (u)int部门,其余
  16.   

我不明白为什么比较快。

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

1 个答案:

答案 0 :(得分:1)

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

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

对于浮点数,绝大多数值将表示为in a normalised form,因此您可以按以下顺序进行比较:

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

这些比较在通用处理器中是如此普遍和重要,以至于它们将针对速度进行优化。