代码之家  ›  专栏  ›  技术社区  ›  Silicomancer

16到32位整数转换与性能

  •  0
  • Silicomancer  · 技术社区  · 5 年前

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

    我的代码应该与普通C++编译器兼容,尽可能多地运行。对于许多这样的组合,要进行性能测量和汇编代码读取是很困难的,所以我要求进行一次理论考试。

    换句话说:在什么情况下,16位到32位的无符号整数转换通常会占用CPU周期?我什么时候才能在不损失CPU周期的情况下使用内存缩减的16位阵列?

    0 回复  |  直到 5 年前
        1
  •  2
  •   Alexey Frunze    5 年前

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