.NET Compact Framework, проблемы с производительностью свойств и отслеживание изменений полей

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

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

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

2 идеи:

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

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

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

2 ответа

Решение

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

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

Другие вопросы по тегам