int32_t和int_fast32_t之间的区别

参见英文答案 > What is the difference between intXX_t and int_fastXX_t?4个
两者有什么区别?我知道无论环境如何,int32_t都是32位,但正如它的名字暗示它的速度快,int_fast32_t与int32_t相比要快多少?如果它明显更快,那么为什么呢?

解决方法

C是根据理想化的抽象机器指定的.但是,真实世界的硬件具有语言标准未捕获的行为特征. _fast类型是类型别名,允许每个平台指定对硬件“方便”的类型.

例如,如果你有一个8位整数数组并希望单独改变每个整数,那么在当代桌面机器上这将是相当低效的,因为它们的加载操作通常要填充整个处理器寄存器,即32或64位宽(“机器字”).因此,浪费了大量加载的数据,更重要的是,您无法并行化两个相邻数组元素的加载和存储,因为它们存在于同一个机器字中,因此需要按顺序进行加载 – 修改 – 存储.

如果可行,_fast类型通常与机器字一样宽.也就是说,它们可能比您需要的更宽,因此消耗更多内存(因此更难以缓存!),但您的硬件可能能够更快地访问它们.但这完全取决于使用模式. (例如,一个int_fast8_t数组可能是一个机器字数组,修改这样一个数组的紧密循环可能会有很大的好处.)

找出它是否有所作为的唯一方法是比较!

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...