" 缓存不友好代码 "和" 缓存友好 "代码之间有什么区别?
如何确保编写高效缓存代码?
我仍然是C++的新手,还有很多需要学习的东西,但我最近变得非常依旧的是使用嵌套(多维)向量.所以我通常会得到这样的东西:
std::vector<std::vector<std::string> > table;
Run Code Online (Sandbox Code Playgroud)
然后,我可以轻松访问这样的元素:
std::string data = table[3][5];
Run Code Online (Sandbox Code Playgroud)
然而,最近我得到的印象是(在性能方面)更好地拥有一维向量,然后只使用"索引算术"来相应地访问元素.我认为这种性能影响对于更大或更高维度的向量来说是重要的,但我真的不知道,到目前为止还没有找到关于它的大量信息.
虽然直觉上,单个矢量比一个更高维的矢量具有更好的性能是有道理的,但老实说,我不明白其实际原因.此外,如果我只是使用单维向量,我将失去用于访问多维元素的直观语法.所以这是我的问题:
为什么多维向量效率低下?如果我只使用一维向量(表示更高维度的数据),那么访问其元素的最佳,最直观的方法是什么?