버그 해결을 위한 모든 질문을 던져
0 votes
383 views

보통 인스턴스를 한번만 생성시키기 위해 아래와 같은 비교문 스타일로 하는경우가 많은걸로 알고 있습니다.

if (instance == null)
{
    instance = new Class();
}

return instance;

위의 코드를 널 조건 연산자를 이용하면

return instance = instance ?? new Class();

위와 같이 코드를 간결하게 할 수 있을 것 같은데 약간 걸리는것은

instance가 null이 아닐경우에는 = 연산자가 좀 무의미하게 실행이 되는것 입니다.

저런 용도의 코드에서 = 연산이 성능에 부담을 줄 정도 일까요?

asked (38 point)
수정됨 , 383 views

1 답변

+2 votes
우수 답변
return instance ?? (instance = new Class());

 

answered (128 point)
선택됨
이런 방법을 생각을 못했네요. 감사합니다.ㅎ
다른 듯 하지만,

return instance ?? (instance = new Class());
return instance = instance ?? new Class();

위의 2개 코드는 모두 동일한 기계어로 번역됩니다. (물론, 향후 C# 개발팀에서 최적화를 할 수는 있겠지만, 일단 현재는 같습니다.)
오호?
눈으로 보기에는 순서가 틀릴것 같은데, IL코드는 같은 가 보군요.

IL 코드로 확인 해봐야 겠네요.
감사합니다.
^^; 분명히 "폴리모프"님이 제시한 코드가 더 빠릅니다. (전체적인 IL 코드는 동일한데 점프하는 위치만 달라져서 제가 그 부분에서 실수한 것입니다. 대충 봤다는. ^^;)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

201 질문
311 answers
335 댓글
324 users