2012-05-26 9 views
2

나는 boxing/unboxing이 성능에 영향을 준다는 것을 안다. 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과 같은 중복 된 캐스트는 컴파일러가 생략합니다. 생성 된 IL은 캐스트 표현식 사용 여부와 관계없이 정확히 동일하기 때문에 성능상의 불이익은 없습니다. 어쨌든 복싱 변환이 수행 될 명시적인 캐스트에 대해서도 마찬가지입니다.

object value = 0; 
object value = (object)0; // exactly the same 
관련 문제