Postupy: Měření výkonu dotazu PLINQ
Tento příklad ukazuje, jak použít Stopwatch třídy změřit čas potřebný pro provedení dotazu PLINQ.
Příklad
Tento příklad používá prázdnou foreach smyčky (For Each v jazyce Visual Basic) k měření času spuštění dotazu trvá. V reálném světě kódu smyčky obvykle obsahuje další zpracování kroků přidejte do dotazu celková doba provádění. Všimněte si, že stopky není spuštěn, dokud stačí před smyčky, protože kdy začíná spuštění dotazu. Pokud požadujete další detailní měření, můžete ElapsedTicks vlastností namísto ElapsedMilliseconds.
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();
}
Celkovou dobu provádění je užitečné metriky jsou experimentování s implementací dotazu, ale to není vždy všechno. Chcete-li získat hlubší a bohatší zobrazení interakce podprocesů dotazu s sebou a s ostatními procesy spuštěné pomocí Visualizer souběžnosti. Tento nástroj je k dispozici v Microsoft Visual Studio 2010 Premium. Další informace naleznete v tématu Thread Execution Data Views.