我试图制作塔防游戏,我正在为精确半径的快速查找实体实现游戏地图。我使用std :: list(对于快速push_back实体指针,并且从列表的任何点删除都不错),但我发现迭代1500列表的元素是超长的。我的游戏甚至不能达到10 FPS。我将展示MSVS在分析器中显示的内容:
在getEntitiesInRadius调用next之后
是!=运算符,它与列表的结尾进行比较。接下来是==操作员调用。它以调试模式运行。但我认为即使是调试迭代1500元素太长。也许我错了这个断言?
答案 0 :(得分:0)
我认为你的地图在游戏中的大小是固定的吗?如果你想要“最快”,std::list
根本不是一个好的选择,我会从vector
开始,只有在这还不够时我会看其他解决方案。
你说你使用list来表示'fast push_back',但除非正在调整矢量大小(可以使用reserve
来避免,当然在固定大小的实体上(如游戏地图所示)),push_back在矢量上将更快。
删除可能会更慢(但没有给出)。
最重要的是,对调试版本的性能测试根本没有意义,首先要确保在尝试解决之前出现问题!