Имеет ли добавление [Serializable] к классу какие-либо последствия для производительности?
Мне нужно добавить атрибут [Serializable] в класс, который чрезвычайно чувствителен к производительности.
Будет ли этот атрибут иметь какое-либо влияние на производительность работы класса?
2 ответа:
Экземпляры классов атрибутов создаются только при первом обращении к ним. Если вы не делаете никакой сериализации для этого конкретного класса, конструктор
SerializableAttribute()
никогда не будет вызван, следовательно, это не вызовет никаких проблем с производительностью.Вот интересная статья о конструкторах атрибутов: http://www.codingonthetrain.com/2008/10/attribute-constructors.html
Атрибуты являются аннотациями метаданных, поэтому они не добавляют веса классу во время выполнения, если только они не интерпретируются средой выполнения определенным образом, что заставляет ее относиться к классу по-другому.
[Serializable] - это просто атрибут маркера, используемый в качестве соглашения, чтобы указать, что класс сериализуем, он не имеет никакого эффекта, и среда выполнения не обрабатывает классы каким-либо особым образом.