16到32位整数转换与性能

时间:2019-03-11 23:25:04

标签: c++ performance type-conversion cpu-architecture unsigned-integer

我想从数组中加载16位无符号整数,并将这些值用于C ++中的32位无符号计算。我可以选择将值存储为16位数组(较少的内存)还是32位数组(更多的内存消耗)。

我的代码应该可以与常见的C ++编译器一起编译,并可以在尽可能多的体系结构上运行。对于这些组合中的许多组合,将很难进行性能测量和汇编代码读取,因此我要求进行理论检查。

换句话说:在什么情况下16位至32位无符号整数转换通常会消耗CPU周期?我什么时候可以期望在不减少CPU周期的情况下使用内存减少的16位阵列?

1 个答案:

答案 0 :(得分:2)

我认为所有主要体系结构都支持带有符号扩展名和零扩展名的内存加载。 x86,ARM和MIPS确实具有此类加载指令。旧的体系结构和原始微控制器,尤其是8位和16位微控制器,可能没有这样的指令,因此可能需要多条指令才能获得相同的结果。如果您不提那些,您可能根本不在乎。因此,只需编写可移植的C / C ++代码并完成它即可。