5
改善O(N ^ 2)函数(所有实体迭代所有其他实体)
有一点背景知识,我正在和一个C ++的朋友一起编写一个演化游戏,使用ENTT作为实体系统。生物在2D地图中四处走走,吃些绿色或其他生物,繁殖并改变其特性。 此外,当实时运行游戏时,性能还不错(60fps没问题),但我希望能够显着加快速度,而不必等待4小时即可看到任何重大变化。所以我想尽快得到它。 我正在努力寻找一种有效的方法来让生物找到食物。每个生物都应该寻找最接近它们的最佳食物。 如果要吃东西,应该以中心位置为中心的生物以149.64半径(视野距离)环顾四周,并根据营养,距离和种类(肉或植物)来判断应选择哪种食物。 。 负责查找每个生物食物的功能正在消耗大约70%的运行时间。简化当前的编写方式,它是这样的: for (creature : all_creatures) { for (food : all_entities_with_food_value) { // if the food is within the creatures view and it's // the best food found yet, it becomes the best food } // set the best food as the target for creature …