.NET Compact Framework,属性性能问题和字段更改跟踪

Posted

技术标签:

【中文标题】.NET Compact Framework,属性性能问题和字段更改跟踪【英文标题】:.NET Compact Framework, Properties performance issues and tracking of field change 【发布时间】:2010-12-11 12:44:27 【问题描述】:

我有一种情况,我应该跟踪应用于字段的 FIRST 更改。这件事适用于我需要尽可能高效的结构的“一些”(10个,如果我没记错的话)字段(它是一个结构,将集中用于在线程之间传递信息以呈现/更新数据;它是基本上是一个消息传递结构)。

在这种情况下,我说的是 xbox .net compact 框架,我听说属性存在性能问题,因为它们没有内联,所以我的问题是:

面对这种情况最好的方法是什么?

2 个想法:

1) 我会跟踪对字段所做的第一次更改,因此我使用 属性 会自动将位字段设置为 1 来表示“我”变了!” (这个位字段是单个 int 的一部分,所以它只有 4 个字节的开销),但我会浪费所有其他对该属性的调用,因为它们只会更改值,因为该位已经设置(直到下一帧显然)

2)手动跟踪字段的变化(这将是公开的),用我自己的双手设置位(更多的错误可能性,但优化)

感谢您的建议

【问题讨论】:

【参考方案1】:

我能想象的唯一“改进”的方法 (1) 是使用委托 - 保留两个版本的属性集代码,一个设置位字段,一个不设置。然后在设置位后使属性使用第二个版本。这样,您将避免总是设置位字段的开销(但进行委托调用的开销会更小)。

【讨论】:

我对解决方案进行了基准测试,但一个简单的属性调用比公共字段使用慢 3 倍......而且我不在紧凑框架上,而是在 .net 4.0 上(差异是 649对 274 的滴答声),在 Xbox360 上慢 3.4 倍:7734 对 2265 的滴答声...对计算机的数字相当高! 这与问题没有直接关系,但自定义运算符是性能灾难,如果您将 2 个向量与重载运算符相加,而不是将它们的 X 和 Y 相加,您将失去 100 的性能......怎么了用这个框架?!?! @Fire-Dragon-DoL:不带属性直接调用委托怎么样?不过,如果你那么担心性能,我想你应该留在公共领域...... 我会和他们在一起,这是函数调用的问题(我环顾了网络)......所以所有涉及函数调用的东西都是“慢”的(他们认为我会'不在程序中使用函数?-.-)...顺便感谢您的建议【参考方案2】:

正如 rsenna 所说,我发现的唯一解决方案是留在公共领域或使用函数,而不必担心执行速度慢。这个没有解决办法

【讨论】:

以上是关于.NET Compact Framework,属性性能问题和字段更改跟踪的主要内容,如果未能解决你的问题,请参考以下文章

.NET Compact Framework 上的 DateTime.Now 中的毫秒数始终为零?

.NET Compact Framework 中的 OCR 图像

在 .NET Compact Framework 中使用简单的 SOAP

如何使用 .NET compact framework 2.0 播放 MIDI 文件?

Windows Mobile 应用程序的 UI 组件 (.NET Compact Framework)

c# - 针对 Compact Net Framework 3.5 编译时出错 - 方法 'GetString' 没有重载采用 '1' 参数