2010-12-11 62 views
0

我有一种情况,应该跟踪应用于字段的FIRST更改。这个东西适用于我需要尽可能高效的结构体(它是一个结构体,它将被密集地用于在线程之间传递信息以便渲染/更新数据;它是消息传递结构基本上)。.NET Compact Framework,属性性能问题和字段更改的跟踪

在这种情况下,我在谈论的Xbox .NET精简框架,我heared该属性有性能问题,因为他们没有内联,所以我的问题是:

什么是遇到过这种情况的最好办法?

2想法:

1)我跟踪做一个领域的第一个变化的,所以我用一个属性,将自动设置位字段设置为1的说:“我一直变了!” (这个位字段是单个int的一部分,所以它只有4个字节的开销),但是我会浪费所有其他对这个属性的调用,因为它们只会改变这个值,因为这个位已经被设置(直到下一帧明显)

2)手动跟踪场的变化(这将是公众左右),设置与我自己的手(更多错误的可能性位,但优化)

感谢您的任何建议

回答

0

正如rsenna所说,我发现的唯一解决方案就是留在公共领域或与功能一起工作,没有太多的关于慢执行的问题。有没有这个解决方案

1

唯一“改进”的做法(1),我可以想象会使用委托 - 保留两个版本的属性集代码,一个设置位域,另一个不设置。然后在该位已设置后使属性使用第二个版本。这样你就可以避免总是设置位域的开销(但会使委托调用的开销更小)。

+0

有趣的解决方案,我会基准它 – 2010-12-11 16:49:45

+0

我基准的解决方案,但一个简单的属性调用比公共领域的使用慢3倍......我没有在紧凑框架但在.net 4.0上(差异是649对274),在Xbox360上它慢了3.4倍:对于2265的7734滴答...与计算机相当高的数字! – 2010-12-11 18:47:01

+0

这并不直接涉及到问题,但自定义运算符是一个性能灾难,如果您将2个向量与重载运算符相加,而不是总结它们的X和Y,则会失去100个性能......这个框架有什么用处? ! – 2010-12-11 19:23:14