16至32位整数转换与性能

问题描述 投票:1回答:1

我想从一个数组加载16位无符号整数,并在C ++中使用这些值进行32位无符号计算。我可以选择将值存储为16位数组(较少内存)或32位数组(更多内存消耗)。

我的代码应该与常见的C ++编译器兼容,并在尽可能多的架构上运行。对于许多这样的组合,很难进行性能测量和汇编代码读取,因此我要求进行理论检查。

换句话说:16位到32位无符号整数转换在哪些条件下通常消耗CPU周期?我什么时候可以使用内存减少的16位阵列而不会丢失CPU周期?

c++ performance type-conversion cpu-architecture unsigned-integer
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.