Влияет ли добавление [Serializable] в класс на производительность - PullRequest
27 голосов
/ 10 сентября 2009

Мне нужно добавить атрибут [Serializable] в класс, который чрезвычайно чувствителен к производительности.

Будет ли этот атрибут влиять на производительность класса?

Ответы [ 2 ]

25 голосов
/ 10 сентября 2009

Экземпляры классов атрибутов создаются только при первом обращении к ним. Если вы не выполните сериализацию для этого конкретного класса, конструктор SerializableAttribute() никогда не будет вызван, следовательно, он не вызовет проблем с производительностью.

Вот интересная статья о конструкторах атрибутов: http://www.codingonthetrain.com/2008/10/attribute-constructors.html

7 голосов
/ 10 сентября 2009

Атрибуты являются аннотациями метаданных, поэтому они не увеличивают вес класса во время выполнения, если только они не интерпретируются средой выполнения определенным образом, что заставляет его по-разному относиться к классу.

[Сериализуемый] - это просто атрибут маркера, используемый в качестве соглашения для указания того, что класс сериализуем, он не действует и среда выполнения не обрабатывает классы каким-либо особым образом.

...