<分区>
假设
内存占用不相关
无需分配非常大的数组(最大数组数 1.000.000 个元素)。
平台是64位
始终为每个变量使用最广泛的可用类型:
int64_t
用于有符号整数
uint64_t
用于无符号整数
double
用于 float
当不需要 64 位时,执行速度会比使用更小的类型更快吗?
或者会以相同的速度(或更慢)执行并占用更多内存?
标签 c performance
<分区>
假设
内存占用不相关
无需分配非常大的数组(最大数组数 1.000.000 个元素)。
平台是64位
始终为每个变量使用最广泛的可用类型:
int64_t
用于有符号整数
uint64_t
用于无符号整数
double
用于 float
当不需要 64 位时,执行速度会比使用更小的类型更快吗?
或者会以相同的速度(或更慢)执行并占用更多内存?
最佳答案
我是一名游戏程序员,经常看到有人提倡double或者float。
基本上我学到的是:使用硬件的预期大小“通常”更快,例如,如果硬件需要 64 位整数来进行整数数学运算,则 64 位更快。
“双重”阵营的捍卫者倾向于只使用那个论点。
问题是,对于某些软件,您可能会遇到其他障碍,例如用完缓存、用完管道(如果数据小于其适合的数据,硬件可能会乱序或并行执行例如寄存器)、显式并行操作(MMX、SSE 等)、必须在上下文切换、核心切换等中移动的数据量。
所以我找到的最好的“解决方案”是编写一些测试代码,在设计的硬件中运行它,然后分析结果。
关于C:始终使用可用的最宽类型会导致执行速度更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107719/