프로그래밍/C#

[C#] Eager & Short-circuit operators

흔한티벳여우 2022. 2. 25. 13:49
반응형

 이번 포트스에선 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();
}

 

반응형