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