Como: Medir o desempenho da consulta PLINQ
Este exemplo mostra como usa o Stopwatch classe para medir o tempo que leva para executar uma consulta de PLINQ.
Exemplo
Este exemplo usa um vazio foreach loop (For Each em Visual Basic) para medir o tempo que leva para a consulta executar. No código do mundo real, o loop normalmente contém etapas de processamento adicionais para aumentar o tempo de execução total da consulta. Observe que o cronômetro não é iniciado até que pouco antes do loop, pois é quando a execução da consulta começa. Se você precisar de mais de medição refinada, você pode usar o ElapsedTicks propriedade em vez de 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();
}
O tempo de execução total é uma medida útil quando você está fazendo experiências com implementações de consulta, mas ele não sempre dizem tudo. Para obter uma visão mais rica e profunda da interação dos threads de consulta entre si e com outros processos em execução, use o Visualizador de simultaneidade. Essa ferramenta está disponível em Microsoft Visual Studio 2010 Premium. Para obter mais informações, consulte Visualizador de simultaneidade.