/*******************************************************************
* 문자열이 있는지 검사할 때 흔히 if (문자열개체 != "")나
* if (문자열개체 != Stirng.Empty)를 쓰는데 이럴 경우 불필요한 오버헤드가 생기지만,
* Length 속성은 개체가 생성될때 설정되므로
* if (문자열개체.Length != 0 )로 해서 값만 비교해서 보다 빠르게 검사할 수 있습니다.
* ******************************************************************/
using System;
namespace StringEmptyVSStringLength
{
/// <summary>
/// Class1에 대한 요약 설명입니다.
/// </summary>
class Class1
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
//
string notEmptyString = "값이 있는 문자열";
// IL_000c: call bool [mscorlib]System.String::op_Inequality(string, string)
if (notEmptyString != String.Empty)
{
}
//IL_0014: callvirt instance int32 [mscorlib]System.String::get_Length()
if (notEmptyString.Length != 0)
{
}
}
}
}
IL 코드로는 1가지 명령어지만
"if (notEmptyString != String.Empty)"에서는 12가지 내부 개체의 메서드를 사용해 비교하려는 양쪽의 문자열을 정렬하고 서로 일일히 비교하지만,
i"f (notEmptyString.Length != 0)"에서는 단순이 변수에 값이 0이냐만 비교하기 때문에 속도가 빠를수 밖에 없죠.
실행해 시간을 검사하면 아래와 같은 차이를 보입니다. 단위는 (Microseconds)
742.4 if (notEmptyString != String.Empty)
0.7 if (notEmptyString.Length != 0)
- 출처 : KNUG (한국 닷넷 사용자 모임; Korea .NET User Group)
2005/07/11
값 없는 문자열은 Length로 검사로 속도향상
가장 많이 본 글
-
여러 보안 기관 및 언론등에서 자주 오르내리는 해킹사건의 상당 부분이 웹사이트를 통해서 이루어지고 있다. 왜냐면, 요즘에는 거의 대부분 방화벽등의 장비등을 통해서 막아 놓기 때문에 역시 공개되어 있는 루트를 이용해야 하는데 그것이 바로 웹사이트 이기 ...
-
Windows Server 2003 제품군에서는 다음 두 가지 종류의 클러스터링 서비스가 제공됩니다. 다음 설정 방법은 Windows Server 2003을 기준으로 합니다. Cluster Service (MSCS) Windows Server...
-
Windows2000 Server 및 Windows Server 2003 에서는 관리용 터미널 세션으로 2개 밖에 제공하지 않습니다. 그런데, 터미널에 접속후 연결을 끊지 않을 경우 다른 사용자의 로그인이 불가능합니다. 방법은 query session...
댓글 없음:
댓글 쓰기