相关疑难解决方法(0)

有没有一种方法可以对数组排序而不分配任何内存?

我需要非常频繁地对一个较大的集合(上百个/下千个项目)进行排序,即每帧以60 fps的速度(我正在使用Unity)。计算每个项目的密钥有点慢,因此需要将其缓存。

我尝试了各种方法:

  • 具有IComparer的List.Sort(),每次都会计算密钥:超级慢
  • SortedList:速度更快,但是会生成GC分配(30KB /帧):为什么?他们的钥匙盒装了吗(我用了很长时间)?分配的键/值对?如果我将long包装在一个类中,则GC减半,所以我的猜测是“两者”:1个分配给该对,一个分配给该键将值类型装箱...
  • Array.Sort(keyArray,valueArray):太可怕了!缓慢并生成256KB GC /帧!

很遗憾,因为SortedList似乎很适合这项工作,我是否缺少任何无GC的替代方案?

c# unity-game-engine

5
推荐指数
1
解决办法
1856
查看次数

你什么时候不使用通用收藏?

使用泛型的优势在于它增加了类型的安全性 - 你只能放入正确类型的东西,并且你可以在不需要演员的情况下获得正确的类型.我不能使用泛型集合的唯一原因是你需要存储一些任意数据.我错过了什么吗?在处理集合时,还有哪些其他原因不使用泛型?

.net c# generics

4
推荐指数
2
解决办法
2190
查看次数

标签 统计

c# ×2

.net ×1

generics ×1

unity-game-engine ×1