我目前正在设计一款游戏,其中每个关卡最多使用大约 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/