我是靠谱客的博主 孝顺蚂蚁,最近开发中收集的这篇文章主要介绍C++之vector为什么在多维上比多维的数组读写效率慢很多,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

慢的原因是数据存储的局部性问题(data locality):

  1. 使用二位数组Depart[500][21]的时候,所有数据在内存中是连续存放的。访问内存时,内存访问的局部性较强,Cache命中的概率较大。L1 Cache访问延迟只有几个指令周期,而内存访问延迟则达到几百个指令周期。

2)Vector中的数据是连续存放的,**但是Vector本身只保存指向数据块的指针。Vector建立在栈上,保存数据的数据块在堆上。因此二位动态数组Vector <Vector>中,指向行的所有指针是连续存放的。每个行的数据是连续存放的,但是行与行之间是不连续存放的。****因此跨行访问时局部性降低,Cache命中率下降。所以用时间更多。

最后

以上就是孝顺蚂蚁为你收集整理的C++之vector为什么在多维上比多维的数组读写效率慢很多的全部内容,希望文章能够帮你解决C++之vector为什么在多维上比多维的数组读写效率慢很多所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部