什么是快速整数?定义整数的速度
What is a fast integer? What defines how fast an integer is?
在此主题中提到了以下内容:
快速类型(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。您的交易速度与大小。
- 跟随整数索引列表的自定义类迭代器
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 如何检查是否定义了固定宽度的整数
- 如何在不给它任何类型(如整数)的情况下定义某物?
- 从 C++ 中定义的异常返回整数
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 定义整数之间的特殊划分
- 如何比较 #define 定义的字符串和整数
- 如何在C 中正确定义包含科学符号的整数矢量
- C++整数常量表达式定义
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- 根据全局整数定义整数
- C++20 是否为"overflow"的有符号整数很好地定义了左移?
- C / C++中无符号整数的减法和比较是否定义良好?
- 有符号整数溢出、内部函数和未定义的行为
- 为什么用户定义的字符串文本和整数文本具有不同的行为?
- P1236R1:为什么 c++ 标准在定义整数时试图摆脱单词"bit"?
- 什么是快速整数?定义整数的速度
- 使用循环整数定义变量:c++
- 正在将浮点数转换为整数定义的行为