다음을 통해 공유


방법: PLINQ 쿼리 성능 측정

이 예제에서는 Stopwatch 클래스를 사용하여 PLINQ 쿼리를 실행하는 데 소요되는 시간을 측정하는 방법을 보여 줍니다.

예제

이 예제에서는 빈 foreach 루프(Visual Basic의 경우 For Each)를 사용하여 쿼리를 실행하는 데 소요되는 시간을 측정합니다. 실제 코드에서는 일반적으로 루프에 추가 처리 단계가 포함되므로 총 쿼리 실행 시간이 늘어납니다. 루프 바로 전, 즉 쿼리 실행이 시작되기 전까지는 스톱워치가 시작되지 않습니다. 보다 세밀한 측정이 필요한 경우에는 ElapsedMilliseconds 대신 ElapsedTicks 속성을 사용할 수 있습니다.

Sub Main()
    Dim source = Enumerable.Range(0, 3000000)
    Dim queryToMeasure = From num In source
                         Where num Mod 3 = 0
                         Select Math.Sqrt(num)

    Console.WriteLine("Measuring...")


    ' The query does not run until it is enumerated.
    ' Therefore, start the timer here.
    Dim sw = System.Diagnostics.Stopwatch.StartNew()

    ' For pure query cost, enumerate and do nothing else.
    For Each n As Double In queryToMeasure
    Next

    Dim elapsed As Long
    elapsed = sw.ElapsedMilliseconds ' or sw.ElapsedTicks
    Console.WriteLine("Total query time: {0} ms.", elapsed)

    ' Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.")
    Console.ReadKey()
End Sub
static void Main()
{
    var source = Enumerable.Range(0, 3000000);

    var queryToMeasure = from num in source
                         where num % 3 == 0
                         select Math.Sqrt(num);

    Console.WriteLine("Measuring...");

    // The query does not run until it is enumerated.
    // Therefore, start the timer here.
    System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();

    // For pure query cost, enumerate and do nothing else.
    foreach (var n in queryToMeasure) { }

    long elapsed = sw.ElapsedMilliseconds; // or sw.ElapsedTicks

    Console.WriteLine("Total query time: {0} ms", elapsed);

    // Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();

}

총 실행 시간은 쿼리 구현을 시험하는 데 유용한 메트릭이지만 이것만으로는 전반적인 성능을 알 수 없는 경우도 있습니다. 쿼리 스레드 간의 상호 작용 및 쿼리 스레드와 실행 중인 다른 프로세스의 상호 작용을 깊이 있고 자세하게 보려면 동시성 시각화 도우미를 사용합니다. 이 도구는 Microsoft Visual Studio 2010 Premium에서 제공합니다. 자세한 내용은 동시성 시각화 도우미를 참조하십시오.

참고 항목

개념

PLINQ(병렬 LINQ)