我正在尝试通过并行化一些代码来提高游戏的性能。我对这个排序功能的瓶颈之一:
_list.Sort((obj1, obj2) => obj1.Distance.CompareTo(obj2.Distance));
变量
_list
是一个List<Object>
.
有办法并行化吗?
更多信息:
Distance
是一个float
,计算为Vector3.Distance()
。我需要对所有列表进行排序,而不仅仅是其中的一部分。该列表最多包含 1000/1500 个对象。在最坏的情况下,根据我所做的测试,需要 7 到 10 毫秒(从我使用深度配置文件在分析器中看到的)。最坏情况下的列表完全没有排序,不是我能控制的。
方法与
AsParallel()
_list = _list.AsParallel().OrderBy(x => x.Distance).ToList();
这使用内部快速排序,不擅长并行化。