【发布时间】:2013-04-29 13:05:21
【问题描述】:
我有一个 Sutherland–Hodgman 算法的实现,所以我需要经常返回数组。我正在使用 Unity,因此答案至少需要适用于 Mono 运行时。
我想知道是否最好返回普通数组,或者我是否可以作为 IEnumerator 返回,以减少垃圾收集之间的时间。到目前为止,我一直在返回数组,但我真的很想放弃对 GC.Collect() 的调用。
我猜垃圾收集器也需要收集 IEnumerators,并且可能还有一些相关的开销?
【问题讨论】:
-
我认为您的意思是
IEnumerables(通用或其他)。而且大多数都是托管集合,是的,通常会比数组产生一些内存开销(当然,也需要收集)。 -
您在哪里或为什么要调用 GC.Collect()?一般来说,这几乎是不可取的。如果您在游戏循环中运行该算法,您应该真正重用您的集合,无论它是数组还是其他东西,否则分配/解除分配可能会占用大量性能。跨度>
-
我真的认为我的意思是 IEnumerator。不管它是什么,我的意思不是一些实现 IEnumerable 的集合,而是一个执行多个返回的函数。
-
我没有调用 GC.Collect(),但只要收集器需要,它就会被调用。我无法完全控制它何时被调用。
-
你说的是 Unity 游戏引擎还是 Unity IoC 容器?
标签: c# arrays mono unity3d ienumerator