gpt4 book ai didi

c++ - STL 容器速度与数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:32 25 4
gpt4 key购买 nike

我刚刚开始从事一个速度非常重要的科学项目 (HPC)。我目前正在设计数据结构。该项目的核心是双值的 3D 网格,用于求解偏微分方程。

由于这里的速度可能比代码的简单性更受关注,我想知道与通常的 C 样式数组相比,STL 的性能如何。在我的例子中,因为它是一个 3D 网格,我正在考虑 a) 一个具有线性索引的一维 vector b) 一个包含 3 个 vector 的 vector 或 c) 一维 c 型数组或 d) 一个三维 c 型数组。

我查找了较早的问题,但我只发现了有关构造/破坏的问题(这在这里并不重要,因为数据结构仅在程序启动时创建一次 - 快速索引和计算很重要)或不同 STL 的比较容器。

感谢帮助

最佳答案

很难(甚至不可能)提前说出相对表现会。通常,在现代机器上,使用平面 vector 并计算其中的索引,将胜过 vector 的 vector ;在旧机器上,反过来是真的。 (在现代机器上,乘法是由于位置不佳,通常比页面未命中便宜。在旧机器,乘法很昂贵,而且没有缓存,所以位置没有区别。)

此外,根据机器和库的实现,为这个平面 vector 使用 std::vector 可能更多比使用简单的内存指针昂贵(或者它可能不是——你无法提前知道)。我还是会去vector 首先,将所有内容仔细包装在控制类中,如果仍然存在性能问题,请切换到指针。

关于c++ - STL 容器速度与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com