如果有一个很大的结构,有很多成员变量。一些函数需要访问结构中的4-5个元素才能工作,因此以下哪种情况可以是缓存有效的(缓存未命中较少)-
1.)将指向结构的指针作为参数传递给函数,该函数将访问所需的元素。(假设元素在结构声明中不是连续的,并且它们是分开的)
2.)将各个结构成员变量作为参数传递给函数。
首先,从缓存的角度来看,这个场景首先会影响代码的性能吗?
谢谢。
-AD
发布于 2009-04-29 12:28:10
忽略缓存问题,传递指针总是最快的,因为没有复制感兴趣的字段的开销。
发布于 2012-04-30 11:18:21
存储器访问是一种存储器访问。无论它发生在调用者还是被调用者身上都没有关系。忽略缓存,有几个理由来传递指针(通过引用传递)。
提高缓存性能的唯一方法是提高局部性。在struct (或其他)定义中,将变量安排为连续的。将算法安排为仅访问每个结构一次。如果这些不是简单的更改,并且程序是缓存受限的,那么性能将只需要那么多的编程工作。
https://stackoverflow.com/questions/802112
复制相似问题