在 Unity 上为 List<T> 并行化 Sort() 函数

问题描述 投票:0回答:1

我正在尝试通过并行化一些代码来提高游戏的性能。我对这个排序功能的瓶颈之一:

_list.Sort((obj1, obj2) => obj1.Distance.CompareTo(obj2.Distance));

变量

_list
是一个
List<Object>
.

有办法并行化吗?

更多信息:

Distance
是一个
float
,计算为
Vector3.Distance()
。我需要对所有列表进行排序,而不仅仅是其中的一部分。该列表最多包含 1000/1500 个对象。在最坏的情况下,根据我所做的测试,需要 7 到 10 毫秒(从我使用深度配置文件在分析器中看到的)。最坏情况下的列表完全没有排序,不是我能控制的。

c# performance unity3d parallel-processing
1个回答
0
投票

方法与

AsParallel()

_list = _list.AsParallel().OrderBy(x => x.Distance).ToList();

这使用内部快速排序,不擅长并行化。

© www.soinside.com 2019 - 2024. All rights reserved.