2012-05-26 5 views
2

Я знаю, что бокс/распаковка влияет на производительность. Согласно MSDN, unboxing can take four times as long as an assignment. У нас есть много строк в нашем коде, которые имеют «избыточные» броски. Они на самом деле не нужны, и код компилируется без них. Вероятно, это не повредит производительности, потому что компилятор видит, что нет необходимости делать распаковку, но, возможно, нет! Может быть, когда мы произведем их экспликацию, компилятор будет вынужден делать ненужную распаковку. Мне интересно, влияет ли этот тип «избыточного кастинга» на производительность, как unboxing или nop?Усиливает ли избыточное количество приводов?

+2

Можете ли вы разместить образец того, что вы говорите? –

+1

Вы можете посмотреть здесь http://stackoverflow.com/questions/5278674/do-redundant-casts-get-optimized для более подробного обсуждения. –

ответ

6

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

object value = 0; 
object value = (object)0; // exactly the same 
Смежные вопросы