c++ - 在处理顺序访问的对象时,链表与数组的性能相比?

标签 c++

我目前正在设计一款游戏,其中每个关卡最多使用大约 10,000 个对象。每一帧的所有对象都将按顺序访问至少一次,有时两次或更多次。现在我正在使用数组,但我很好奇链表是否更适合处理此类任务。

我从未使用过链表,但现在似乎是使用它们的合适时机,而且由于我正在从事的项目是一个学习项目,与其他任何项目一样,我想尝试一种新方法处理游戏中的对象。链表似乎是节省空间和加快游戏速度的好方法,但由于我缺乏经验,我很好奇切换到链表是否会导致明显的性能损失。 (通常我的座右铭是尝试看看,但在这种情况下,需要大量工作才能在数组上实现链表,而且我已经花了很多时间来设计关卡和对象的工作方式,所以我现在有点厌烦了。)

最佳答案

除非您非常频繁在序列中间插入和删除元素,否则数组几乎肯定会优于链表(尽管有 a handful of scenarios in which linked lists are useful )。

使用链表,您将失去在 CPU 级别预取的所有好处,因为实际上每个节点都必须单独获取。

当然,由于这是 C++,您可以通过将 std::vector 的用法替换为 std::list 来非常轻松地测试性能差异,对吧? :-)

关于c++ - 在处理顺序访问的对象时,链表与数组的性能相比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327917/

相关文章:

c++ - CMake 找不到生成的 Visual Studio 15 2017 实例,但可以与 Visual Studio 16 2019 一起正常工作

c++ - 如何在 OpenGL 中正确旋转和缩放对象?

c++ - 无序的对集,编译错误

c++ - 应用 SFINAE 检查是否为 T 定义了特征

C++ 神秘结构赋值与 int 截断

php - 使用编译代码和 PHP 加速器提高性能之间的差异

c++ mysql连接器检查结果集为空

c++ - 从字符串中标记/提取信息的最佳方法

c++ - 编写第一个监听 C++ 应用程序

c++ - 返回引用后,数组中的值(它是对象的属性)被垃圾替换