Влияют ли избыточные приведения на производительность?

Я знаю, что упаковка/распаковка влияет на производительность. Согласно MSDN, распаковка может занять в четыре раза больше времени. как задание. В нашем коде есть много строк с «избыточными» приведениями. На самом деле они не нужны, и код прекрасно компилируется без них. Вероятно, это не повредит производительности, потому что компилятор видит, что распаковывать не нужно, а может и нет! Возможно, когда мы приведем их явно, компилятор будет вынужден выполнить ненужную распаковку. Мне интересно, влияет ли этот тип «избыточного приведения» на производительность так же, как распаковка или nop?


person Bohn    schedule 26.05.2012    source источник
comment
Не могли бы вы опубликовать образец того, о чем вы говорите?   -  person Angshuman Agarwal    schedule 26.05.2012
comment
Вы можете посмотреть здесь stackoverflow.com/questions/5278674/ для дальнейшего обсуждения.   -  person Asya Kamsky    schedule 26.05.2012


Ответы (1)


По-настоящему избыточные приведения типа (int)0 или (object)null игнорируются компилятором. Поскольку сгенерированный IL одинаков независимо от того, используете ли вы выражение приведения или нет, это не влияет на производительность. То же самое касается явного приведения, где в любом случае будет выполнено бокс-преобразование:

object value = 0;
object value = (object)0; // exactly the same
person Michael Liu    schedule 26.05.2012