什么是快速整数?定义整数的速度



在此主题中提到了以下内容:

快速类型(INT_FAST#_T)为您提供了一个最快类型的整数,它的宽度至少为#位(其中#= 8、16、32或64)。例如,int_fast32_t将为您提供至少32位的最快整数类型。

他所说的最快整数类型是什么意思?是什么定义了速度?

我认为并非所有整数都以相同的方式访问,有些比其他整数更容易访问,但是我需要知道什么可能导致访问速度?

我已经阅读了一个问题:

在某些处理器上,如果将变量存储在寄存器中的较长的寄存器中,则编译器可能必须添加额外的代码才能减少任何额外的位。例如,如果uint16_t x;存储在ARM7-TDMI上的32位寄存器中,代码X ;可能需要评估为x =((x 1)<< 16)>> 16);。在该平台的编译器上,UINT_FAST16_T很可能被定义为uint32_t的代名词以避免。

是什么使它更快?在任何一种情况下,32位都将在寄存器级别上循环。

一些64位计算机对所有内容都使用64位,因此在32位空间中进行数学额外的费用(例如,必须模拟未签名的溢出)。在这样的机器上,int_fast32_t可以是64位。同样,对于一些32位机器 - int_fast8_t可能是32位。

x86-64在这里没有真正影响 - 它保留了8-,16和32位的说明,因此编译器可以说"在这些寄存器上执行8位数学",并且寄存器没关系更宽。如果您在商品台式机或服务器上编程,则可能不需要关心"快速"整数类型。

我认为"快速"的概念归结为编译器的构建方式。一个好的编译器知道它正在生成代码的CPU架构。如果是这种情况,则编译器知道寄存器的大小以及将执行最终计算或数据移动的单元。考虑到所有这些,这些C/C 数据类型允许您选择一个至少一定尺寸的整数(可以容纳8、16、32或64位整数),该整数也可以"快速" type CPU使用。

我敢打赌,在大多数情况下,这种"快速"类型的速度不会比容纳该数量数量的常规类型的速度更快,但是"快速"类型可以使您能够获得。在那些情况下,所有可能的表现都会比较小的寄存器更好,两者都可以容纳所需数量的位。

我还敢打赌,这种"快速"类型的交易可能是它将大于相同的常规类型。IE。您的交易速度与大小。

最新更新