반응형
이번 포트스에선 Eager Operator와 Short-circuit Operator에 대해 알아보도록 하겠다.
C#으로 따지자면 &,| 등이 Eager Operator이고 &&, || 가 Short-circuit Operator이다. 물론 다른 언어에서도 다른 방식으로 존재한다.
아래의 코드에서 source.Count > 5 || source.Sum() > 10이라는 조건식이 존재한다. 간단하게 설명하자면 Short-circuit Operator에서는 앞단의 source.Count > 5가 true라면 뒤의 source.Sum() > 10 의 연산을 수행하지 않는다. 만약 Eager Operator 일 경우에는 모든 조건을 다 수행한 후 결과를 가지고 처리하기에 조건식을 사용할때는 Short-circuit Operator를 사용하는 것이 속도에 더 효율적이다.
static void Main(string[] args)
{
List<int> source = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int count = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Restart();
for (int i = 0; i < 1000000; ++i)
{
if (source.Count > 5 || source.Sum() > 10)
{
count++;
}
}
sw.Stop();
Console.WriteLine($"Short-circuit operators => \t{sw.ElapsedMilliseconds} ms");
count = 0;
sw.Restart();
for (int i = 0; i < 1000000; ++i)
{
if (source.Count > 5 | source.Sum() > 10)
{
count++;
}
}
sw.Stop();
Console.WriteLine($"Eager operators => \t{sw.ElapsedMilliseconds} ms");
Console.ReadKey();
}
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] Newtonsoft JsonConverter 사용하기 (0) | 2022.03.30 |
---|---|
[C#] Oracle 연결 시 예외 발생 문제 (0) | 2022.03.11 |
[C#] 배열 복사 성능 평가 (0) | 2022.02.08 |
[C#] Linq Where Performance Test (0) | 2022.01.26 |
[C#] List에 추가된 구조체의 값 (0) | 2022.01.25 |