architecture - 在 32 位 CPU 上, 'integer' 类型是否比 'short' 类型更高效?

标签 architecture integer cpu 32-bit cpu-architecture

在32位CPU上,整数为4字节,短整数为2字节。如果我正在编写一个使用许多始终符合所提供的短整数范围的数值的 C/C++ 应用程序,那么使用 4 字节整数还是 2 字节整数更有效?

我听说 4 字节整数效率更高,因为这适合从内存到 CPU 的总线带宽。但是,如果我将两个短整数相加,CPU 是否会将两个值并行打包在一次传递中(从而跨越总线的 4 字节带宽)?

最佳答案

如果您有大量数字,请使用有效的最小尺寸。使用 16 位短整型数组比使用 32 位整型数组效率更高,因为您可以获得两倍的缓存密度。与缓存未命中的成本相比,CPU 为处理 32 位寄存器中的 16 位值而必须进行的任何符号扩展的成本都可以忽略不计。

如果您只是在与其他数据类型混合的类中使用成员变量,那么情况就不那么明确了,因为填充要求可能会消除 16 位值节省空间的优势。

关于architecture - 在 32 位 CPU 上, 'integer' 类型是否比 'short' 类型更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/163254/

相关文章:

scala - Scala中基于组件的实体系统

ruby-on-rails - 如何处理 Rails 应用程序中重用的对象

java - 出现 Null Pointed 异常错误但运行正常? Java JComboBox(下拉框)

algorithm - 调度算法最短作业优先

kubernetes - k8s 中的 cpu 限制大小应该确定为多少?

linux - 如何创建每个用户的使用情况报告?

python - 有没有办法为 groovy 或 python 等动态脚本语言规划和绘制架构图?

java - 如何在 Swing 应用程序中设计用户首选项模块?

ios - 整数值不会被方法改变

java - java中十进制数相乘