Je travaille sur un outil pour optimiser les requêtes linq to sql. Fondamentalement, il intercepte le pipeline d'exécution linq et effectue certaines optimisations, comme par exemple supprimer une jointure redondante d'une requête. Bien sûr, il y a une surcharge dans le temps d'exécution avant que la requête ne soit exécutée dans le dbms, mais ensuite, la requête devrait être traitée plus rapidement. Je ne veux pas utiliser un profileur sql car je sais que la requête générée sera plus performante dans les dbms que dans l'original, je cherche une façon correcte de mesurer le temps global entre la création de la requête dans linq et la fin de son exécution. À l'heure actuelle, je suis en utilisant la classe Chronomètre et mon code ressemble à ceci:Besoin de conseils sur la comparaison des performances de 2 requêtes linq-sql équivalentes
var sw = new Stopwatch();
sw.Start();
const int amount = 100;
for (var i = 0; i < amount; i++)
{
ExecuteNonOptimizedQuery();
}
sw.Stop();
Console.Writeline("Executing the query {2} times took: {0}ms. On average, each query took: {1}ms", sw.ElapsedMilliseconds, sw.ElapsedMilliseconds/amount, amount);
Fondamentalement, la méthode ExecutenNonOptimizedQuery() crée une nouvelle DataContext, crée une requête, puis itère sur les résultats.
Je l'ai fait pour les deux versions de la requête, la normale et la version optimisée. J'ai pris l'idée de this poste de Frans Bouma.
Y a-t-il d'autres approches/considérations que je devrais prendre?
Merci d'avance!
Merci pour votre réponse! – uvita