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?
Benchmarkieren Sie kleine Code -Proben in C#, kann diese Implementierung verbessert werden? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post