Имеет ли добавление [Serializable] к классу какие-либо последствия для производительности?


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

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

2 26

2 ответа:

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

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

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

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