Многие люди ответили, но никто не упомянул это до сих пор...
Атрибуты используются в большой степени с отражением. Отражение является уже довольно медленным.
Это очень стоящее маркировка Ваших пользовательских атрибутов, как являющихся sealed
классы для улучшения их производительности во время выполнения.
Это - также хорошая идея рассмотреть, где было бы уместно использовать, помещают такой атрибут, и приписывать Ваш атрибут (!) для указания на это через AttributeUsage
. Список доступных использований атрибута мог бы удивить Вас:
также здорово, что атрибут AttributeUsage является частью подписи атрибута AttributeUsage. Стоп для круговых зависимостей!
[AttributeUsageAttribute(AttributeTargets.Class, Inherited = true)]
public sealed class AttributeUsageAttribute : Attribute
Все логарифмы связаны некоторой константой. (Отсюда и формула замены основания ). Поскольку мы обычно не принимаем во внимание константы при анализе сложности, база не имеет значения.
Обычно при выводе алгоритма базой считается 2. Рассмотрим такую сортировку, как сортировка слиянием . Вы можете построить из него дерево , которое имеет высоту log₂ n
, потому что каждый узел имеет две ветви.
Это не имеет значения, относительная сложность одинакова независимо от используемой базы.
Один из способов думать из этого O (журнал 2 X) = O (журнал 10 X) = O (журнал N X)