在 C# 中,使用 new 关键字的性能成本是多少?我特别询问与游戏开发有关的问题,我知道在 C++ 中,每个更新周期都绝对不能成为新事物。这同样适用于 C# 吗?我正在使用 XNA 并为移动设备开发。真的只是问一个优化问题。
最佳答案
new
的成本分为三个部分:
- 分配内存(如果是值类型可能不需要)
- 运行构造函数(取决于你在做什么)
- 垃圾收集成本(同样,如果它是值类型,这可能不适用,具体取决于上下文)
如果不在主代码中创建任何 新对象,就很难以惯用的方式使用 C#...尽管我敢说尽可能多地重用对象是可行的。尝试使用一些真实的设备,看看您的游戏表现如何。
我当然同意像这样的微优化通常在编程中要避免,但它更适合游戏循环而不是其他地方——因为显然游戏对甚至小停顿。但是,很难判断使用更多对象的成本,因为 GC 成本会随着时间的推移而分散。
分配器和垃圾收集器在 .NET 中非常好,尽管它在设备上可能更简单(我假设是 Windows Phone 7)?特别是,我不确定 Compact Framework CLR(WP7 使用的)是否具有分代 GC。
关于c# - C# 中 'new' 的性能成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4253728/