Suche

über alle News und Events

 

Alle News

 

Am 01. Oktober ab 12:30 Uhr treffen sich...

Read more

Die Nutzung des Postman Mock Servers ist einfach...

Read more

Ein Community-Held feiert seinen Erfolg: „WOW! Ich...

Read more

Einfach großartig! Die Stimmung war hervorragend....

Read more

Rules, Rules, RULES!! Dan Toomey, The evolution of...

Read more

Keynote von Slava Koltovich, Feature: E2E - AIS...

Read more

Inspirierende Messeerfahrungen auf der 'Zukunft...

Read more

In diesem Artikel wird beschrieben, wie ihr eure...

Read more

Messaging mit dem Service Bus ermöglicht die...

Read more

Sebastian Meyer, Microsoft & SAP...

Read more

How to: Mit BenchmarkDotNet die Performance von C# Code testen, vergleichen und Probleme identifizieren

In diesem Artikel wird beschrieben, wie ihr eure C# Methoden mit Hilfe von BenchmarkDotNet auf ihre Performance untersuchen könnt.

BenchmarkDotNet lässt sich am einfachsten über den NuGet Packet Manager installieren:

  • Install-Package BenchmarkDotNet

Alternativ ist das Projekt auf GitHub verfügbar (https://github.com/dotnet/BenchmarkDotNet).
Dort ist auch die Projektdokumentation verlinkt, die über Guides, Features und weitere Beispiele verfügt (https://benchmarkdotnet.org/articles/overview.html).

Als einfaches Beispiel habe ich die Klasse „BenchmarkExample“ erstellt, um die Performanceunterschiede zweier Methoden, die einen String verketten, zu demonstrieren.

Die Beispielklasse enthält die Methoden ConcatStringWithStringBuilder() und ConcatStringWithList(), die mit [Benchmark] versehen sind. Durch das Attribut werden diese in den Benchmark mit aufgenommen.

BenchmarkDotNet stellt uns mehrere Attribute zur Verfügung, in diesem Beispiel wird nur [RankColumn] und [MemoryDiagnoser] verwendet.

Als Einstiegspunkt für den BenchmarkRunner, dient die Program.cs:

Um den Benchmark zu starten, ist es wichtig, den Release Build des Projekts auszuführen. Falls man es dennoch im Debug startet, erhält man diese Fehlermeldung:

In Visual Studio kann der Release Build mit folgendem Command ausgeführt werden:

  • dotnet run --project Benchmark.csproj -c Release

Ein erfolgreicher Durchlauf liefert uns folgendes Ergebnis:

Die Spalten der Tabelle enthalten die von unseren Attributen definierten Daten.
Die Rank Spalte wurde vom [RankColumn] Attribut hinzugefügt und durch das [MemoryDiagnoser] Attribut können wir unseren Speicher, mit den Spalten Gen0, Gen1, Gen2 und Allocated, überwachen.

Durch diesen einfachen Test können wir feststellen, dass der StringBuilder zwar mehr Speicherplatz benötigt, er aber minimal schneller im Zusammensetzen von Strings ist.

Dieser quiTeq-Tipp kommt aus Stuttgart von Daniel Hellwig, QUIBIQ Stuttgart.

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz