.NET Compact Framework, проблемы с производительностью свойств и отслеживание изменений полей - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть ситуация, когда я должен отслеживать ПЕРВЫЕ изменения, примененные к полю. Это относится к «некоторым» (10, если я не ошибаюсь) полям структуры, которая должна быть максимально эффективной (это структура, которая будет интенсивно использоваться для передачи информации между потоками для рендеринга / обновления данных; структура передачи сообщений в основном).

В этом случае я говорю о компактной среде xbox .net, я слышал, что свойства имеют проблемы с производительностью, потому что они не встроены, поэтому мой вопрос:

Какой лучший способ справиться с этой ситуацией?

2 идеи:

1) Я отслеживаю первое изменение, внесенное в поле, поэтому я использую свойство , которое автоматически установит битовое поле равным 1, чтобы сказать «Я был изменилось!» (это битовое поле является частью одного целого, так что это только 4-байтовые издержки), но я потрачу все остальные вызовы на это свойство, потому что они просто изменят значение, потому что бит уже установлен (до следующего кадра, очевидно, )

2) I вручную отслеживайте изменение поля (что будет общедоступным), устанавливая бит своими руками (больше возможностей для ошибок, но оптимизировано)

Спасибо за любые предложения

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Единственный «улучшенный» способ выполнения (1), который я могу себе представить, - это использование делегатов - сохранить две версии кода набора свойств, одну, которая устанавливает битовое поле, и одну, которая не делает. Затем заставьте свойство использовать вторую версию после того, как бит был установлен. Таким образом вы избежите накладных расходов на установку битового поля всегда (но вы получите меньшие накладные расходы на вызов делегата).

0 голосов
/ 21 июля 2011

Как сказала rsenna, единственное решение, которое я нашел, - это остаться с открытыми полями или работать с функциями, не беспокоясь о медленном выполнении. Для этого нет решения

...