ben*_*blo
5
c#
unity-game-engine
我需要非常频繁地对一个较大的集合(上百个/下千个项目)进行排序,即每帧以60 fps的速度(我正在使用Unity)。计算每个项目的密钥有点慢,因此需要将其缓存。
我尝试了各种方法:
- 具有IComparer的List.Sort(),每次都会计算密钥:超级慢
- SortedList:速度更快,但是会生成GC分配(30KB /帧):为什么?他们的钥匙盒装了吗(我用了很长时间)?分配的键/值对?如果我将long包装在一个类中,则GC减半,所以我的猜测是“两者”:1个分配给该对,一个分配给该键将值类型装箱...
- Array.Sort(keyArray,valueArray):太可怕了!缓慢并生成256KB GC /帧!
很遗憾,因为SortedList似乎很适合这项工作,我是否缺少任何无GC的替代方案?