【发布时间】:2012-03-04 10:18:19
【问题描述】:
我目前正在阅读Oreilly的Learning XNA 4.0,我注意到作者很容易创建一个结构值,例如Vector2或Rectangle多次而不考虑性能。
例如,SquareCollision() 方法检查两个游戏实体之间的碰撞,每次调用时都会创建两个 Rectangles,而不是简单地让每个游戏实体拥有自己的 Rectangle 字段并比较字段不再创建任何结构值。
我在很多地方多次看到这种模式,这让我想知道:
在 C# 中创建结构值可以忽略不计吗?
真的如此吗?属于微优化部分?
也许因为我的经验主要是 Java,ValueTypes 的概念对我来说很陌生,但似乎多次从结构重新创建一个值(并调用它的构造函数)似乎是对资源的巨大浪费。
【问题讨论】:
-
我认为这有点难以描述,因为真正重要的是对整体性能的影响。即使重新创建相同的值比使用字段慢 10,000 倍,如果它仅对性能造成 0.0001% 的影响,它仍然没有多大意义。 (对不起,随意的数字,只是想确保我被理解。)我试图理解的是它实际上是多么糟糕(如果有的话)以及我是否应该尽量避免这样做。
-
您可以通过显示代码使问题更具体一些。防止误解。
-
我一直想知道
Point p; p.X=1; p.Y=2与p = new Point(1,2)的区别。也许对于编译器来说最终没有区别。