Suche

über alle News und Events

 

Alle News

 

Ein Arbeitsplatz ist mehr als nur ein Ort, an dem...

Weiterlesen

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

Weiterlesen

Die Nutzung des Postman Mock Servers ist einfach...

Weiterlesen

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

Weiterlesen

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

Weiterlesen

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

Weiterlesen

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

Weiterlesen

Inspirierende Messeerfahrungen auf der 'Zukunft...

Weiterlesen

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

Weiterlesen

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

Weiterlesen

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