【发布时间】:2016-02-23 21:34:49
【问题描述】:
一般来说,在 C# 中使用 List 比使用 T[] 更方便。但是,有时分析器显示 List 与原生实现的批量操作(如 Array.Copy 和 Buffer.BlockCopy)相比具有显着的性能损失。此外,无法获取指向 List 元素的指针。
这使得在 Unity 中使用动态网格有点痛苦。如果我们可以访问 T[] List._items,其中一些问题可以得到缓解。这是否可以在没有大量开销的情况下完成? (CPU 或垃圾)
【问题讨论】:
-
为什么不为此案例实现自定义列表?
-
因为只有自定义 API 才会接受自定义列表。平台 API 不会。
-
@PaulDuBois:平台 API应该期望实现
IList<T>的任何东西,您可以在自定义类中实现它。平台 API 中实际上需要List<T>实例的大多数示例都是 API 设计错误的可悲纪念碑。 -
@PaulDuBois - 我们所做的只是动态网格。我只使用普通的旧数组。需要明确的是,在任何“一般”的 Unity 编程中,我从来没有使用过 List 以外的任何东西,用数组来打扰是没有意义的。但是对于网格来说,它一直都是数组。 (在 iOS 中,我只是得到一块 ram 并自己做!)只是纯粹的 FTR,一个想法,当你在网格级别处理时,我看不出使用 List 有任何优势。你所做的一切你认为的算法都是偏移量。