【问题标题】:Do 32-bit types save memory on 64-bit systems?32 位类型是否在 64 位系统上节省内存?
【发布时间】:2014-08-29 18:49:34
【问题描述】:

32 位类型会在 64 位系统上节省内存吗? 此外,内存是分为单个字节还是多字节(32/64 位)?

我知道处理器将所有数据处理为 64 位,填充缺失的数据。 那么 32 位 int 会减慢计算速度吗?还是 int 无论如何都会存储为 64 位?

我问是因为我受过微控制器培训,内存和存储空间有限,我想知道它是否与智能手机和计算机有关。

谢谢。

【问题讨论】:

  • 缓存是现代处理器的王者。你不会得到两倍的缓存大小。许多 64 位编译器仍然使用 32 位 int 类型。

标签: memory 64-bit storage 32bit-64bit 32-bit


【解决方案1】:

大小不是问题,编译器通常会解决这个问题。对性能而言重要的是数据存储的结构。

填充数据结构,使数据结构和数组的每个数据元素都与 64 位或 128 位的自然操作数大小对齐。还将数据构造成 64 字节的段,以匹配 64 和 128 字节的 L1 高速缓存行大小。 Intel Pentium 4、Intel Xeon、Pentium M、Intel Core Duo 处理器上为 64 字节,Pentium 4 和 Intel Xeon 处理器上为 128 字节。

您不想访问存储在两个不同缓存行中的变量。在例程中使用本地定义的变量而不是全局变量。如果要在较长时间内重复访问全局变量,请将它们复制到本地堆栈上定义的变量中。

【讨论】:

    【解决方案2】:

    除非您拥有庞大的数组(数百 MB 甚至 GB 大),否则在现代系统上使用 32 位类型不会节省太多内存。如果您正在做数学运算(例如加密算法),使用 64 位整数运算应该可以提高性能。

    【讨论】:

      猜你喜欢
      • 2018-12-14
      • 2023-03-04
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2012-06-12
      • 1970-01-01
      • 2011-08-20
      相关资源
      最近更新 更多