dte*_*ech 3 c++ performance caching memory-efficient bit-fields
我需要一个2位数组,我根本不关心保存内存,但我关心的是最小化缓存未命中和最大化缓存效率.使用bool数组将使用4倍以上的内存,这意味着对于缓存中的每个可用数据块,将有3个未使用.从技术上讲,如果我使用位域,我可以获得3倍更好的缓存一致性.
计划是将其实现为一个字节数组,分为4个相等的位域,并使用div函数来获取整数商和余数,可能在一个时钟中,并使用它们来访问正确的索引和右边位域.
我需要的数组大约是10000个元素,因此它将产生明显更密集的打包数据,使用2个实际位将允许整个数组适合L1缓存,而使用字节数组则不可能.
所以我的问题是,是否有人可以告诉我这是否是一个以性能为导向的任务的好主意,所以我知道是否值得出去实施2位阵列?当然,最好的了解方法是分析,但事先提供的任何信息都可能有用,我们将不胜感激.
在现代处理器上有10000个元素,它应该很好地适合内存作为字节(10KB),所以我不会太担心它,除非你想让它在一个非常小的微处理器上运行,其缓存要小得多比现代CPU的典型16-32KB L1缓存.
当然,如果您认为从性能角度来看这是您代码的重要组成部分,那么您可能希望使用不同的解决方案来测试性能[从您在开始优化之前已经完成的分析中衡量,对吧?] .
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |