c – 2位位字段数组对性能和缓存效率的影响?
发布时间:2020-12-16 09:42:03 所属栏目:百科 来源:网络整理
导读:我需要一个2位数组,我根本不关心保存内存,但我关心的是最小化缓存未命中和最大化缓存效率.使用bool数组将使用4倍以上的内存,这意味着对于缓存中的每个可用数据块,将有3个未使用.从技术上讲,如果我使用位域,我可以获得3倍更好的缓存一致性. 计划是将其实现为
我需要一个2位数组,我根本不关心保存内存,但我关心的是最小化缓存未命中和最大化缓存效率.使用bool数组将使用4倍以上的内存,这意味着对于缓存中的每个可用数据块,将有3个未使用.从技术上讲,如果我使用位域,我可以获得3倍更好的缓存一致性.
计划是将其实现为一个字节数组,分为4个相等的位域,并使用div函数来获取整数商和余数,可能在一个时钟中,并使用它们来访问正确的索引和右边位域. 我需要的数组大约是10000个元素,因此它将产生明显更密集的打包数据,使用2个实际位将允许整个数组适合L1缓存,而使用字节数组则不可能. 所以我的问题是,是否有人可以告诉我这是否是一个以性能为导向的任务的好主意,所以我知道是否值得出去实施2位阵列?当然,最好的了解方法是分析,但事先提供的任何信息都可能有用,我们将不胜感激. 解决方法
使用10000个元素,在现代处理器上,它应该很好地适合内存中的字节(10KB),所以我不会太担心它,除非你想让它在一个非常小的微处理器上运行,它的缓存要小得多比现代CPU的典型16-32KB L1缓存.
当然,如果您认为从性能角度来看这是您代码的重要组成部分,那么您可能希望使用不同的解决方案来测试性能[从您在开始优化之前已经完成的分析中衡量,对吧?] . (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |