[英]16 to 32 bit integer conversion vs performance
我想从数组中加载16位无符号整数,并将这些值用于C ++中的32位无符号计算。 我可以选择将值存储为16位数组(较少的内存)还是32位数组(更多的内存消耗)。
我的代码应该可以与常见的C ++编译器一起编译,并可以在尽可能多的体系结构上运行。 对于这些组合中的许多组合,将很难进行性能测量和汇编代码读取,因此我要求进行理论检查。
换句话说:在什么情况下16位到32位无符号整数转换通常会消耗CPU周期? 我何时可以期望使用减少内存的16位数组而不丢失CPU周期?
我认为所有主要架构都支持带有符号扩展和零扩展的内存负载。 x86,ARM和MIPS确实具有此类加载指令。 旧的体系结构和原始微控制器,尤其是8位和16位微控制器,可能没有这样的指令,因此可能需要多条指令才能获得相同的结果。 如果您不提那些,您可能根本不在乎。 因此,只需编写可移植的C / C ++代码并完成即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.