微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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数组可能是一个机器字数组,修改这样一个数组的紧密循环可能会有很大的好处.)

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

原文地址:https://www.jb51.cc/c/117252.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐