2010-02-18 7 views
19

var 키워드는 가독성을 거의 잃지 않으면서도 C# 코드의 노이즈를 줄이는 데 큰 도움이됩니다. 나는 컴파일러가 나를 강요 할 때만 명시적인 타이핑을 사용한다고 말하고 싶다.'var'의 사용은 C# 컴파일러의 성능에 어느 정도 영향을 줍니까?

알고 계신 분은 using var does not change the runtime characteristics of my code입니다. 하지만 질문이 나에게 발생했습니다 : 컴파일러가 현재 대신 수행하고있는 모든 추가 작업에 대해 컴파일 타임에 큰 벌금을 지불하고 있습니까?

누구나 var의 광범위한 사용이 번 컴파일 시간의 차이점을 확인하기 위해 어떤 벤치 마크를 수행 했습니까?

+0

대답은 - 없음입니다. –

+1

그 대답에 대한 증거 나 추론이 있습니까? –

+1

나는 폐회 투표에 잘못 투표했으나 투표를 취소 할 수는 없습니다. 다른 질문은 어느 정도는 관련이 있지만 정확한 중복은 아닙니다. –

답변

20

내 조언 : 두 가지 방법으로 시도해보십시오. 결과를 측정하십시오. 그럼 알게 될거야.

나는 벤치 마크를 수행하지 않았으며, 갖고 있었다고해도 그 질문에 답하지 않을 것입니다. 우리는 당신이 가지고있는 하드웨어가 무엇인지, 당신의 컴퓨터에서 실행되고있는 것이 무엇인지, 그리고 전형적인 프로그램이 어떤 것인지 알지 못합니다. 우리가 당신이 받아 들일 수있는 또는 받아 들일 수없는 성능이라고 생각하는 것도 알지 못합니다. 당신은이 모든 것을 아는 유일한 사람입니다. 그래서 당신은이 질문에 대답 할 수있는 유일한 사람입니다.

+3

@didibus : 더 좋아하는 답변을 게시하는 것이 좋습니다. –

+1

돌이켜 보면, 나는 약간의 접촉이없는 것을 본다. 나는 OP가이 질문을 대답하지 않게하여 컴파일러의 성능에 영향을 미치는 실제 벤치 마크 데이터 나 추론을 가진 사람이 여기에이를 공유 할 수 있도록 궁금해 할 것입니다. 또는 OP가 실제로이 답변을 따랐고 여기에서 결과를 공유 할 수 있다면 자신의 벤치 마크를 수행했습니다. –

16

유형을 어쨌든 확인해야합니다. 그러면 시간을 절약 할 수도 있습니다. 좋습니다.
개발 환경이 느리다면 더 많은 메모리 또는 새 컴퓨터를 구입하십시오. 코드 작성 방법을 변경하지 마십시오.

+0

+1 ... 그리고 C#을 컴파일하면 C 또는 C++ 같은 다른 언어와 비교하면 빠르게 타오른다. –

+0

요점을 고맙게 생각합니다.이 때문에 프로그래밍 연습을 변경하지는 않겠지 만, 차이점에 대해 자세히 설명하고자합니다. –

+0

컴파일러가 이미 여러 가지 작업을 수행하고 있음을 알고 있습니까? 'var'은 또 하나의 작은 작업입니다 ... – Kobi

3

정답은 "측정 할 수 없음"입니다. 컴파일하는 동안 C# 컴파일러가 만드는 패스의 부분 (아직 LONG) 목록을 보려면 여기를 찾습니다

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

는 그런 종류의 추론이 그 목록에 단일 패스의 일부임을 이해합니다.

+0

목록의 길이는 실제로 각 항목의 상대적 시간적 가중치에 대해서는 아무 것도 말하지 않습니다. – Joey

1

유형 검사 및/또는 유형 변환을 수행하려면 오른쪽면 유형을 찾아야합니다. 결과를 변수 유형에 할당하는 것은 저렴합니다. 대부분의 비용 (있는 경우)은 모든 지역 변수가 선언되기 전에 표현식을 평가할 수 있도록하기 위해 수행해야하는 작업에 포함되지만 var를 사용하지 않아도 비용을 지불하게됩니다. (BTW, 위의 제약으로 성능이 전혀 손상되지 않을 수도 있습니다.)