通过“int”、“least”和“fast”非固定宽度类型 C/C++ 允许编译器优化

2024-02-15

显然,当大小很重要时,应该使用固定宽度的整数类型。

然而,我读到(Insomniac Games 风格指南),当大小不重要时,“int”应该是循环计数器/函数参数/返回代码/等的首选 - 给出的理由是固定宽度类型可以排除某些编译器优化。

现在,我想区分“编译器优化”和“更合适的”typedef对于目标体系结构”。后者具有全局范围,我的猜测可能影响非常有限,除非编译器能够以某种方式推断由此参数化的程序的全局性能typedef。前者具有本地范围,编译器可以根据本地寄存器压力/使用情况等自由地优化所使用的字节数和操作。

标准是否允许对非固定宽度类型进行“编译器优化”(如我们所定义)?这方面有什么好的例子吗?

如果不是,并且假设 CPU 对较小类型的操作速度至少与较大类型一样快,那么从性能的角度来看,使用根据本地上下文调整大小的固定宽度整数没有任何坏处。至少这提供了缓解套准压力的可能性,但我认为不可能worse.


经验法则的原因是使用int是标准将这种整型类型定义为CPU的自然数据类型(前提是它对于范围足够宽)INT_MIN to INT_MAX。这就是最佳性能的来源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过“int”、“least”和“fast”非固定宽度类型 C/C++ 允许编译器优化 的相关文章

随机推荐