.NET 성능 팁.NET Performance Tips

성능이라는 용어는 일반적으로 프로그램의 실행 속도를 나타냅니다.The term performance generally refers to the execution speed of a program. 경우에 따라 소스 코드에서 특정 기본 규칙을 따라 실행 속도를 높일 수 있습니다.You can sometimes increase execution speed by following certain basic rules in your source code. 일부 프로그램에서는 코드를 자세히 검사하고 프로파일러를 사용하여 최대한 빠르게 실행 중인지 확인하는 작업을 해야 합니다.In some programs, it is important to examine code closely and use profilers to make sure that it is running as fast as possible. 다른 프로그램에서는 코드가 작성된 대로 만족스럽게 실행되므로 이러한 최적화를 수행하지 않아도 됩니다.In other programs, you do not have to perform such optimization because the code is running acceptably fast as it is written. 이 문서에서는 성능이 떨어질 수 있는 몇 가지 일반적인 영역과 성능 향상 팁 및 추가 성능 항목에 대한 링크를 나열합니다.This article lists some common areas where performance can suffer and tips for improving it as well as links to additional performance topics. 성능 계획 및 측정에 대한 자세한 내용은 성능을 참조하세요.For more information about planning and measuring for performance, see Performance

boxing 및 unboxingBoxing and Unboxing

예를 들어 System.Collections.ArrayList와 같이 제네릭이 아닌 컬렉션 클래스에서 상당히 많은 횟수로 boxing되어야 하는 경우 값 형식을 사용하지 않는 것이 좋습니다.It is best to avoid using value types in situations where they must be boxed a high number of times, for example in non-generic collections classes such as System.Collections.ArrayList. System.Collections.Generic.List<T>와 같은 제네릭 컬렉션을 사용하는 경우 값 형식을 boxing하지 않을 수 있습니다.You can avoid boxing of value types by using generic collections such as System.Collections.Generic.List<T>. Boxing 및 unboxing은 계산을 많이 해야 하는 프로세스입니다.Boxing and unboxing are computationally expensive processes. 값 형식이 boxing되면 완전히 새로운 개체가 생성되어야 합니다.When a value type is boxed, an entirely new object must be created. 이 작업은 단순 참조 할당보다 20배나 오래 걸립니다.This can take up to 20 times longer than a simple reference assignment. unboxing 시 캐스팅 프로세스는 할당의 4배에 달하는 시간이 소요될 수 있습니다.When unboxing, the casting process can take four times as long as an assignment. 자세한 내용은 boxing 및 unboxing을 참조하세요.For more information, see Boxing and Unboxing.

문자열Strings

예를 들어 연속 루프에서 다수의 문자열 변수를 연결하는 경우 C# + 연산자 또는 Visual Basic 연결 연산자가 아니라 System.Text.StringBuilder를 대신 사용합니다.When you concatenate a large number of string variables, for example in a tight loop, use System.Text.StringBuilder instead of the C# + operator or the Visual Basic Concatenation Operators. 자세한 내용은 방법: 여러 문자열 연결 하 고 Visual Basic의 연결 연산자합니다.For more information, see How to: Concatenate Multiple Strings and Concatenation Operators in Visual Basic.

소멸자Destructors

빈 소멸자는 사용할 수 없습니다.Empty destructors should not be used. 클래스에 소멸자가 포함되어 있으면 Finalize 큐에서 항목이 생성됩니다.When a class contains a destructor, an entry is created in the Finalize queue. 소멸자를 호출하면 가비지 수집기가 호출되어 큐를 처리합니다.When the destructor is called, the garbage collector is invoked to process the queue. 소멸자가 비어 있으면 성능이 저하됩니다.If the destructor is empty, this simply results in a loss of performance. 자세한 내용은 소멸자개체 수명: 개체가 만들어지고 제거 하는 방법을합니다.For more information, see Destructors and Object Lifetime: How Objects Are Created and Destroyed.

기타 리소스Other Resources

참고자료See also