【发布时间】:2011-06-04 01:14:21
【问题描述】:
我只知道对齐内存分配的基本概念。但我不太关心对齐问题,因为我不是汇编程序员,也没有 MMX/SIMD 的经验。我认为这是过早的优化之一。
现在人们越来越多地谈论缓存命中、缓存一致性、大小优化等。一些源代码甚至分配内存明确对齐在 CPU 缓存行上。
坦率地说,我不知道我的 i7 CPU 的缓存线大小是多少。我知道大尺寸对齐不会有任何伤害。但是,如果没有 SIMD,它真的会得到回报吗?
假设一个程序中有 100000 个 100 字节的数据。而访问这些数据是该程序最密集的工作。
如果我们改变数据结构并将所有 100 字节大小的数据按 16 字节对齐,是否可以获得明显的性能提升? 10%? 5%?
【问题讨论】:
-
说到过早优化,你知道好的算法通常可以为更大的数据集提供数百或数千%的速度提升(甚至更大的数据集)? ;) 诸如程序与缓存的性能如何等细节都在高性能计算的列表中,但对于大多数应用程序来说,这无关紧要。
-
我相信 64 字节是常见的缓存行大小,而不是 16 字节。
-
我曾经通过缓存对齐和预取其内存访问将算法提高了十倍。
标签: c++ c caching memory-management