首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么长的长值对齐一个8字节的边界?

为什么长的长值对齐一个8字节的边界?
EN

Stack Overflow用户
提问于 2015-01-09 22:52:24
回答 2查看 360关注 0票数 0

我知道double与8字节的边界对齐,因为这对浮点指令更有帮助。但是为什么long long也对齐了一个8字节的边界呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 22:59:25

最有可能的解释是,硬件架构在8字节对齐时提供更快的long long读写。

对于记录,使double类型8字节对齐的推理是相同的。实际的浮点运算是使用寄存器来注册指令的.内存对齐与寄存器注册操作无关。内存对齐只与涉及内存读和写的指令的性能有关。

票数 3
EN

Stack Overflow用户

发布于 2015-01-09 23:49:42

一个可能的解释是long longdouble变量都是8字节长的。当您不将它们对齐到一个8字节的边界时,如果一个变量在页面结束之前启动了3个字节,并在下面的页面中保留了5个字节,那么它们可能会跨越两页内存。这可能会导致性能开销,因为读取该变量可能需要获取两页内存(写入该变量将修改两页内存而不是一页内存)。here还讨论了其他低级别的性能含义。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27870573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档