gpt4 book ai didi

c++ - 对齐对 C++11 中的性能真的很重要吗?

转载 作者:IT老高 更新时间:2023-10-28 12:30:33 30 4
gpt4 key购买 nike

对齐对于 C++11 中的性能真的很重要吗?

Stroustrup 的书中有一条建议,可以对结构中的成员进行排序从最大到最小。但我想知道是否有人已经进行了测量以实际查看这是否有任何不同,以及在编写代码时是否值得考虑。

最佳答案

对齐不仅对性能很重要,而且对正确性也很重要。如果数据未正确对齐或访问错误的内存位置,某些架构将因处理器陷阱而失败。在其他情况下,对未对齐变量的访问被分解为多次访问和位移(通常在硬件内部,有时由操作系统陷阱处理程序),失去原子性。

建议按大小降序对成员进行排序是为了优化打包/最小化填充浪费的空间,而不是为了对齐或速度。无论您以什么顺序列出成员,它们都将正确对齐,除非您使用专门的编译指示(即不可移植的 #pragma pack)或关键字请求不符合要求的布局。虽然总结构大小受填充影响,也会影响速度,但通常还有另一种最佳排序。

为了获得最佳性能,您应该尝试将一起使用的成员放在同一个缓存行中,并将被不同线程访问的成员放在不同的缓存行中。有时这意味着需要大量填充才能在自己的缓存行中单独获取跨线程共享变量。但这总比因虚假分享而影响性能要好。

关于c++ - 对齐对 C++11 中的性能真的很重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20809721/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com