CoreWCF Streaming RPC Performance-Engpass: Post-mortem-Analyse eines Stack Overflow-Problems

2025-05-08
CoreWCF Streaming RPC Performance-Engpass: Post-mortem-Analyse eines Stack Overflow-Problems

Der Autor versuchte, CoreWCF für Streaming-RPC zwischen .NET Framework und .NET 8 zu verwenden, um den Durchsatz der Übertragung von Zufallszahlen zu testen. Nach dem Stellen einer Frage auf Stack Overflow wurde diese jedoch ohne Antwort geschlossen. Das Problem besteht darin, dass der CoreWCF-Dienst weiterhin erhebliche CPU-Ressourcen verbraucht und in den Stream schreibt, selbst nachdem der Client die Verbindung getrennt hat. Der Autor vermutet ein Missverständnis der Funktionsweise von WCF-Streams und legt nahe, dass WCF-Streams möglicherweise nicht für die Behandlung von Streams unbekannter Länge geeignet sind. Der Artikel untersucht die Herausforderungen bei der Verwendung von WCF-Streaming für Hochleistungs-RPC und betrachtet Alternativen wie die Verwendung einzelner Nachrichtenanforderungen oder des Sitzungsmodus, um Leistung und Zuverlässigkeit zu verbessern.

Mehr lesen
Entwicklung

Span<T> schlägt memcmp: enorme Performance-Steigerungen beim Vergleich von Byte-Arrays in .NET

2025-03-30
Span<T> schlägt memcmp: enorme Performance-Steigerungen beim Vergleich von Byte-Arrays in .NET

Dieser Beitrag vergleicht verschiedene Methoden zum Vergleich von Byte-Arrays in .NET, darunter `memcmp`, Schleifen, `Enumerable.SequenceEqual` und `Span.SequenceEqual`. Die Ergebnisse zeigen, dass `Span.SequenceEqual` in .NET 8 und höher die beste Leistung bietet und `memcmp` und herkömmliche Schleifenmethoden deutlich übertrifft, sogar unter .NET Framework. Bei kleinen Arrays sind Schleifen am schnellsten, aber der Vorteil von `Span.SequenceEqual` nimmt mit der Array-Größe drastisch zu. Der Autor empfiehlt die Verwendung von `IEnumerable.SequenceEqual` in .NET 8+ und `Span.SequenceEqual` in .NET Framework, um `memcmp` und benutzerdefinierte Implementierungen zu vermeiden.

Mehr lesen
Entwicklung Byte-Array-Vergleich