Существует ли Условный атрибут на уровне класса?

mweerden: NT был разработан для многопользовательского со дня один, таким образом, это не действительно причина. Однако Вы правы относительно того создания процесса, играет меньше важная роль на NT, чем на Unix, поскольку NT, в отличие от Unix, способствует многопоточности по многопроцессорной обработке.

Rob, это верно, что ветвление является относительно дешевым, когда COW используется, но на самом деле, ветвление главным образом сопровождается должностным лицом. И должностное лицо должно загрузить все изображения также. Обсуждение выполнения ветвления поэтому является только частью истины.

При обсуждении скорости создания процесса, это - вероятно, хорошая идея различать NT и Windows/Win32. Насколько NT (т.е. само ядро) идет, я не думаю создание процесса (NtCreateProcess) и распараллеливаю создание (NtCreateThread), значительно медленнее как в среднем Unix. Там мог бы немного больше продолжаться, но я не вижу основные основания для различия в производительности здесь.

при рассмотрении Win32, однако, Вы заметите, что он добавляет довольно мало служебные для обработки создания. Для одного это требует, чтобы CSRSS был уведомлен о создании процесса, которое включает LPC. Это требует, по крайней мере, kernel32 быть загруженным дополнительно, и это должно выполнить много дополнительных бухгалтерских объектов работы, которые будут сделаны, прежде чем процесс будет считаться законченным процессом Win32. И давайте не забывать обо всех дополнительных издержках, наложенных путем парсинга деклараций, проверки, требует ли изображение контейнера compatbility, проверяя, применяются ли политики ограничения программного обеспечения, yada yada.

Однако я вижу полное замедление в сумме всех тех небольших вещей, которые должны быть сделаны в дополнение к необработанному созданию процесса, пространства ВА и начального потока. Но, как сказано в начале - из-за одобрения многопоточности по многозадачности, единственное программное обеспечение, которое серьезно затронуто этим дополнительным расходом, является плохо портированным программным обеспечением Unix. Хотя этот sitatuion изменяется, когда программное обеспечение как Chrome и IE8 внезапно открывает вновь преимущества многопроцессорной обработки и начинает часто запускать и процессы разрушения...

11
задан Anthony D 11 September 2009 в 19:22
поделиться

2 ответа

Нет, нет. Условные атрибуты не заставляют свои цели исчезать сами по себе - они просто заставляют компилятор пропускать пользователей целей.

Эрик Липперт написал сообщение о подобных вещах сегодня, как это происходит. Прочтите его и посмотрите, имеет ли он для вас больше смысла.

Если вам действительно нужно опустить сам класс в режиме выпуска, то используйте директивы препроцессора - но вам придется сделать то же самое для все звонящие тоже. В любом случае, какой вред от удержания класса в режиме выпуска?

Может ли это быть класс в другом проекте? Если это так, , затем , вы можете просто применить условный атрибут ко всем методам, тогда тип не понадобится в режиме выпуска, так что вы можете избежать доставки сборки.

11
ответ дан 3 December 2019 в 09:42
поделиться

Не уверен, правильно ли я понимаю это.

Но, если вы украсите все методы ConditionalAttribute - все это будет удалено, когда символа нет. И, следовательно, хотя класс доступен для использования, во время выполнения не будет никаких методов для его использования.

Я не уверен, почему вам нужно исключить класс в зависимости от символа? Не могли бы вы объяснить сценарий?

0
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: