C\#문자 가 비어 있다 고 판단 하 는 6 가지 방법의 효율 실측 대비
1. strTest== ""
2. strTest.Equals("")
3. strTest== string.Empty
4. strTest.Equals(string.Empty)
5. strTest.Length == 0
6. string.IsNullOrEmpty(strTest)
상기 6 가지 방법의 효율 에 대해 직관 적 인 느낌 을 가지 기 위해 저 는 다음 과 같은 테스트 코드 를 작 성 했 습 니 다.
using System;
namespace StrTest
{
class Program
{
// 3 6
public static string strTest01 = "";
public static string strTest02 = string.Empty;
public static string strTest03 = "0123456789";
public static DateTime start, end; //
public static TimeSpan ts; //
//********************** strTest 6 *****************************
public static void Test(string strTest)
{
//string == ""
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (strTest == "")
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string == /"/" " + ts.TotalSeconds + " ");
//string.Equals("")
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (strTest.Equals(""))
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string.Equals(/"/") " + ts.TotalSeconds + " ");
//string == stirng.Empty
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (strTest == string.Empty)
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string == string.Empty " + ts.TotalSeconds + " ");
//string.Equals(string.Empty)
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (strTest.Equals(string.Empty))
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string.Equals(string.Empty) " + ts.TotalSeconds + " ");
//string.Length == 0
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (strTest.Length == 0)
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string.Length == 0 " + ts.TotalSeconds + " ");
//string.IsNullOrEmpty(string)
start = DateTime.Now;
for (int counter = 0; counter <= 100000000; counter++)
{
if (string.IsNullOrEmpty(strTest))
{
}
}
end = DateTime.Now;
ts = end - start;
Console.WriteLine("string.IsNullOrEmpty(string) " + ts.TotalSeconds + " " + "/n");
}
static void Main(string[] args)
{
Console.WriteLine("=======================================");
Console.WriteLine("strTest = /"/" 5 ");
Console.WriteLine("=======================================");
Test(strTest01);
Console.WriteLine("=======================================");
Console.WriteLine("strTest = string.Emtpy 5 ");
Console.WriteLine("=======================================");
Test(strTest02);
Console.WriteLine("=======================================");
Console.WriteLine("strTest = /"0123456789/" 5 ");
Console.WriteLine("=======================================");
Test(strTest03);
Console.ReadLine(); // :
}
}
}
나 는 꺼 질 수 있 는 소프트웨어 를 모두 꺼 버 렸 다. 가능 한 한 시스템 영향 차단 그리고 6 가지 방법 을 모두 1 억 번 운행 시 켰 습 니 다.첫 번 째 캡 처:
두 번 째 캡 처:
이상 에서 알 수 있 듯 이 문자열 은 세 가지 상황 에서 string.Length==0 의 효율 이 가장 높다.
총결산
1.strTest=="추천 하지 않 습 니 다."값 이 빈 문자열"인 문자열 변수 만 판단 할 수 있 고 효율 이 낮 습 니 다.
2.strTest.Equals(")는 추천 하지 않 습 니 다.같은 1.
3.strTest==string.Empty 는 추천 하지 않 습 니 다.'값 이 null'인 문자열 변수 만 판단 할 수 있 고 효율 이 낮 습 니 다.
4.strTest.Equals(string.Empty)는 추천 하지 않 습 니 다.같은 3.
5. strTest.Length == 0 이런 방식 은 저 는 별로 좋아 하지 않 습 니 다.사용 하 는 것 을 추천 하지 않 습 니 다.자신의 실제 테스트 에서 이러한 판단 방식 의 실행 효율 이 가장 높다 는 것 을 증명 할 수 있 지만,이 를 사용 하려 면 문자열 이 null 이 아니 라 null 이 라면 이상 을 보고 해 야 합 니 다.
6. string.IsNullOrEmpty(strTest) 이런 방법 은 내 가 가장 즐겨 사용 하 는 것 이다.이것 은'빈 문자열 변수'를 성능 적 으로 판단 할 뿐만 아니 라'빈 문자열 의 변수'도 판단 할 수 있 을 뿐만 아니 라 코드 를 간결 하고 아름 답 게 할 수 있다.판단 의 효율 도 낮은 편 은 아니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.