Formazione
Modulo
Misurare le prestazioni dell'indice in Azure Cosmos DB for NoSQL - Training
Misurare le prestazioni di un criterio di indicizzazione in Azure Cosmos DB for NoSQL.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Questo esempio illustra come usare la classe Stopwatch per misurare il tempo necessario per l'esecuzione di una query PLINQ.
Questo esempio usa un oggetto vuoto foreach
ciclo (For Each
in Visual Basic) per misurare il tempo necessario per eseguire la query. Nel codice del mondo reale, il ciclo in genere contiene passaggi di elaborazione aggiuntivi che si aggiungono al tempo di esecuzione totale della query. Si noti che il cronometro non è avviato fino a poco prima del ciclo, perché è quando inizia l'esecuzione della query. Se si richiede una misura più precisa, è possibile usare la proprietà ElapsedTicks
invece di ElapsedMilliseconds
.
using System;
using System.Diagnostics;
using System.Linq;
class ExampleMeasure
{
static void Main()
{
var source = Enumerable.Range(0, 3000000);
var queryToMeasure =
from num in source.AsParallel()
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.
var sw = Stopwatch.StartNew();
// For pure query cost, enumerate and do nothing else.
foreach (var n in queryToMeasure) { }
sw.Stop();
long elapsed = sw.ElapsedMilliseconds; // or sw.ElapsedTicks
Console.WriteLine("Total query time: {0} ms", elapsed);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
Module ExampleMeasure
Sub Main()
Dim source = Enumerable.Range(0, 3000000)
' Define parallel and non-parallel queries.
Dim queryToMeasure = From num In source.AsParallel()
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 = Stopwatch.StartNew()
' For pure query cost, enumerate and do nothing else.
For Each n As Double In queryToMeasure
Next
sw.Stop()
Dim elapsed As Long = sw.ElapsedMilliseconds ' or sw.ElapsedTicks
Console.WriteLine($"Total query time: {elapsed} ms.")
Console.WriteLine("Press any key to exit.")
Console.ReadKey()
End Sub
End Module
Il tempo di esecuzione totale è una metrica utile quando si sperimentano le implementazioni delle query, ma non è sempre esauriente. Per ottenere una visualizzazione più approfondita e dettagliata dell'interazione tra i thread della query tra loro e con altri processi in esecuzione, usare il Visualizzatore di concorrenza.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Modulo
Misurare le prestazioni dell'indice in Azure Cosmos DB for NoSQL - Training
Misurare le prestazioni di un criterio di indicizzazione in Azure Cosmos DB for NoSQL.