사용하지 않는 using 지시문은 성능에 어떤 영향을 미칩니 까?


110

Visual Studio는 새 페이지 또는 프로젝트를 만들 때마다 자동으로 using 문을 만듭니다. 이 중 일부는 절대 사용하지 않습니다.

Visual Studio에는 "사용하지 않는 사용을 제거"하는 유용한 기능이 있습니다.

한 번도 액세스하지 않은 using 문이 파일 맨 위에 언급되어 있으면 프로그램 성능에 부정적인 영향이 있는지 궁금합니다.


물어보기 전에 검색했지만 표시되지 않았습니다.
KdgDev

6
FWIW,이 게시물은 더 나은 SEO를 가지고 있습니다. 그것은 나에게 Google의 첫 번째 결과였습니다. 링크 된 2 개의 원본 중 하나는 사용할 수 없으며 (제거됨) 다른 하나는 리디렉션 일지라도이 게시물에 가치를 추가 할 수있을만큼 다르게 표현됩니다.
DaveD 2011

Google은 사용자의 정확한 선호도와 검색 기록을 알고 있기 때문에 먼저 @DaveD를 사용합니다. 내 친구의 컴퓨터에서 처음은 아니었다.
ilias iliadis

답변:


133

사용하지 않는 사용은 애플리케이션의 런타임 성능에 영향을 미치지 않습니다.

IDE의 성능과 전체 컴파일 단계에 영향을 미칠 수 있습니다. 그 이유는 이름 확인이 발생해야하는 추가 네임 스페이스를 생성하기 때문입니다. 그러나 이는 사소한 경향이 있으며 대부분의 시나리오에서 IDE 경험에 눈에 띄는 영향을 미치지 않아야합니다.

또한 동일한 이유로 디버거에서 식을 평가하는 성능에 영향을 미칠 수 있습니다.


38
더 많은 using이가, 느린 인텔리가 될 것입니다
Riegardt 스테인

14

아니요, 컴파일 타임 / 코딩 스타일 일뿐입니다. .NET 바이너리는 내부적으로 정규화 된 이름을 사용합니다.


3
이것은 긴 클래스 및 메서드 이름이 JIT 컴파일 시간에 작지만 실제 (측정 할 수없는 경우) 영향을 미친다는 것을 의미합니까?
Jared Updike

8

실행 속도에는 영향을 미치지 않지만 적절한 클래스를 검색 할 수있는 잠재적 인 네임 스페이스가 더 많기 때문에 컴파일 속도 / 지능에 약간의 영향을 미칠 수 있습니다. 그다지 걱정하지 않겠지 만, 사용 구성 메뉴 항목을 사용하여 using 문을 제거하고 정렬 할 수 있습니다.


8

다음 링크 사용하지 않는 참조를 제거하는 이유에 대한 좋은 읽기 는 응용 프로그램에서 사용하지 않는 참조를 제거하는 것이 얼마나 유용한 지 설명합니다.

다음은 링크에서 발췌 한 내용입니다.

  1. 응용 프로그램에서 사용하지 않는 참조를 제거하면 CLR에서 런타임에 사용되지 않는 참조 모듈을로드하지 못하게 됩니다. 즉, 각 모듈을로드하는 데 시간이 걸리고 컴파일러가 사용되지 않는 메타 데이터를로드하지 않아도되기 때문에 응용 프로그램의 시작 시간을 줄일 수 있습니다. 각 라이브러리의 크기에 따라 시작 시간이 눈에 띄게 줄어들 수 있습니다. 애플리케이션이로드되면 더 빨라진다는 의미는 아니지만 시작 시간이 줄어들 수 있다는 것을 아는 것이 매우 편리 할 수 ​​있습니다.

  2. 사용하지 않는 참조를 제거하는 또 다른 이점은 네임 스페이스와의 충돌 위험을 줄일 수 있다는 것입니다. 예를 들어, System.DrawingSystem.Web.UI.WebControls참조 가 모두 있는 경우 Image클래스 를 참조하려고 할 때 충돌이 발생할 수 있습니다 . 이러한 참조와 일치하는 클래스에 지시문을 사용하는 경우 컴파일러는 사용할 지시문을 알 수 없습니다. 개발할 때 정기적으로 자동 완성을 사용하는 경우 사용하지 않는 네임 스페이스를 제거하면 입력 할 때 텍스트 편집기의 자동 완성 값 수가 줄어 듭니다.


5

아니오, 프로그램을 컴파일 할 때 관련된 여러 프로세스가 있습니다. 컴파일러가 참조 (클래스, 메서드)를 찾기 시작하면 코드에 사용 된 참조 만 사용합니다. using 지시문은 컴파일러에게 찾을 위치 만 알려줍니다. 사용하지 않는 많은 using 문은 성능 문제가있을 수 있지만 컴파일 시간에만 발생합니다. 런타임시 모든 외부 코드가 제대로 연결되거나 바이너리의 일부로 포함됩니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.