/*******************************************************************
* 문자열이 있는지 검사할 때 흔히 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로 검사로 속도향상
가장 많이 본 글
-
Microsoft iSCSI Software Target 서비스가 네트워크 주소 10.0.1.152, 포트 3260에 바인딩하지 못했습니다. 작업에 실패했습니다. 오류 코드: 10049. 이 포트를 사용하고 있는 다른 응용 프로그램 없는지 확인하십시오.
-
■ 요약 Microsoft .NET Framework SDK(Software Development Kit)나 Visual Studio .NET을 설치한 후에 IIS(Internet Information Server) 매핑이 이루어져 ASP.NET ...
-
Windows 라이센스가 시스템 오류에 의해 복구되었습니다. 사용자의 Windows에 대한 정품 인증을 다시 받아야 합니다.
댓글 없음:
댓글 쓰기