Assez souvent, DONC je me retrouve à l'analyse comparative des petits morceaux de code pour voir ce qui implemnetation est la plus rapide.
Assez souvent je vois des commentaires que l'analyse comparative code ne prend pas en compte jitting ou le garbage collector.
J'ai le simple suivant l'analyse comparative de la fonction qui j'ai évolué tout doucement:
static void Profile(string description, int iterations, Action func) {
// warm up
func();
// clean up
GC.Collect();
var watch = new Stopwatch();
watch.Start();
for (int i = 0; i < iterations; i++) {
func();
}
watch.Stop();
Console.Write(description);
Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
}
Utilisation:
Profile("a descriptions", how_many_iterations_to_run, () =>
{
// ... code being profiled
});
Cette mise en œuvre n'a pas de défauts? Est-il assez bon pour montrer que implementaion X est plus rapide que la mise en œuvre de Y sur Z itérations? Pouvez-vous penser à des façons de vous améliorer?
MODIFIER Son assez clair que le temps, en fonction de l'approche (par opposition à d'itérations), de préférence, quelqu'un a une implémentations où les contrôles ne sont pas d'incidence sur les performances?