2010-12-11 42 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