gpt4 book ai didi

c++ - 遍历对象集合的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:15 24 4
gpt4 key购买 nike

首先给你一些背景:我有一些执行蒙特卡洛模拟的研究代码,本质上发生的事情是我遍历一组对象,从它们的表面计算一些 vector ,然后对每个 vector 我遍历再次收集对象以查看 vector 是否击中另一个对象(类似于光线追踪)。伪代码看起来像这样

for each object {
for a number of vectors {
do some computations
for each object {
check if vector intersects
}
}
}

由于对象的数量可能非常大,光线的数量甚至更多,我认为优化遍历对象集合的方式是明智的。我创建了一些测试数组、列表和 vector 的测试代码,对于我的第一个测试用例,我发现 vector 迭代器的速度大约是数组的两倍,但是当我在代码中实现 vector 时,它比我之前使用的数组慢一些。

所以我回到测试代码并增加了每个循环调用的对象函数的复杂性(相当于“检查 vector 是否相交”的虚拟函数),我发现当函数的复杂性增加执行时间时数组和 vector 之间的差距减小,直到最终数组更快。

有谁知道为什么会这样?循环内的执行时间会影响外循环的运行时间,这似乎很奇怪。

最佳答案

您要测量的是从数组和 vector 访问元素的开销差异。 (以及它们的创建/修改等...取决于您正在进行的操作)。

编辑:它会因您使用的平台/操作系统/库而异。

关于c++ - 遍历对象集合的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467531/

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