Benchmarkieren Sie kleine Code -Proben in C#, kann diese Implementierung verbessert werden?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Benchmarkieren Sie kleine Code -Proben in C#, kann diese Implementierung verbessert werden?

Post by Anonymous »

ziemlich oft auf, so dass ich kleine Codebrocken benchmarkieren kann, um zu sehen, welche Implementation am schnellsten ist. < /p>

Ziemlich oft sehe ich Kommentare, dass das Benchmarking -Code Jitting oder den Müllsammler nicht berücksichtigt. < /p>

Ich habe die folgende einfache Benchmarking -Funktion, die ich langsam entwickelt habe: < /p>

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);
}
< /code>

Verwendung: < /p>

Profile("a descriptions", how_many_iterations_to_run, () =>
{
// ... code being profiled
});
< /code>

Hat diese Implementierung Fehler? Ist es gut genug zu zeigen, dass Implementaion X schneller als die Implementierung y über Z -Iterationen ist? Kannst du dir vorstellen, wie du das verbessern würdest? < /p>

Bearbeiten < /strong>
Es ist ziemlich klar, dass ein zeitbasierter Ansatz (im Gegensatz zu Iterationen) bevorzugt wird, hat jemand Implementierungen, bei denen die Zeitprüfungen die Leistung nicht beeinflussen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post