c# - C# 中 'new' 的性能成本?

标签 c# performance xna new-operator

在 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/

相关文章:

C# 检查泛型接口(interface)的实现

java - 从 socket 和 inputStream 读取慢

c# - XNA:如何测量按键按下的时间?

python - 将 python 与 c/fortran 进行比较

XNA SoundEffect 无法从文件加载

c# - 计算量大的粒子系统用什么技术?

c# - 如何检查 Linq 查询结果中的 DBNull 值

c# - IOCP 是在 I/O 发生时或之后运行的线程吗?

c# - 在代码优先迁移中向具有现有行的表添加唯一索引时处理重复项

MySQL 使用部分字符串进行搜索