【发布时间】:2015-05-22 06:52:16
【问题描述】:
从我目前发现的情况来看,很明显,为 64 位架构编译的程序使用的指针 RAM 是 32 位替代方案的两倍 - https://superuser.com/questions/56540/32-bit-vs-64-bit-systems。
这是否意味着为 64 位编译的代码平均使用的 RAM 是 32 位版本的两倍?
我不知何故对此表示怀疑,但我想知道真正的开销是什么。我想像short、byte 和char 这样的小类型在 64 位架构中大小相同?不过,我不太确定byte。鉴于许多应用程序使用大字符串(如 Web 浏览器等),在大多数实现中主要由 char 数组组成,因此开销可能不会那么大。
所以即使像 int 和 long 这样的数字类型在 64 位上更大,它是否会对 RAM 的使用产生重大影响?
【问题讨论】:
-
byte不是标准化类型。使用 C99 或更高版本,包括<stdint.h>,如果需要无符号 8 位“字节”,请使用uint8_t。 -
内存使用量会增加,但(几乎)不会翻倍
-
创建具有更宽地址和数据总线的新 CPU 的全部意义在于以程序大小和 RAM 消耗为代价提高执行速度。从 8 到 16 到 32 到 64 都是这种情况。所以这里没有什么新鲜事。
-
@Lundin 我意识到这会导致开销,但我想知道开销有多大。某些系统可能需要针对 RAM 消耗而不是 CPU 消耗进行更多优化
-
当然。 RAM 无关紧要,64 位程序使用处理器缓存的效率要低得多。不是两倍坏,取决于发生了什么。由于这个原因,int 仍然是 32 位。由于 AMD 的功劳,他们确实通过添加所有正确的功能来补偿这种性能损失,以获得可比较的结果。从额外的 8 个寄存器开始。
标签: c memory memory-management computer-architecture