Gorge de performance RPC de streaming CoreWCF : autopsie d’une panne sur Stack Overflow

2025-05-08
Gorge de performance RPC de streaming CoreWCF : autopsie d’une panne sur Stack Overflow

L’auteur a tenté d’utiliser CoreWCF pour le RPC en streaming entre .NET Framework et .NET 8 afin de tester le débit du transfert de nombres aléatoires. Cependant, après avoir posé une question sur Stack Overflow, celle-ci a été close sans réponse. Le problème est que le service CoreWCF continue de consommer beaucoup de CPU et d’écrire dans le flux même après la déconnexion du client. L’auteur soupçonne une mauvaise compréhension du fonctionnement des flux WCF, suggérant que les flux WCF peuvent ne pas être adaptés à la gestion de flux de longueur inconnue. L’article explore les défis de l’utilisation du streaming WCF pour le RPC haute performance et envisage des alternatives, telles que l’utilisation de requêtes de messages uniques ou du mode session, pour améliorer les performances et la fiabilité.

Lire plus
Développement

Span<T> bat memcmp : gains de performance considérables dans les comparaisons de tableaux d'octets .NET

2025-03-30
Span<T> bat memcmp : gains de performance considérables dans les comparaisons de tableaux d'octets .NET

Cet article compare différentes méthodes de comparaison de tableaux d'octets dans .NET, notamment `memcmp`, les boucles, `Enumerable.SequenceEqual` et `Span.SequenceEqual`. Les résultats montrent que `Span.SequenceEqual` offre les meilleures performances dans .NET 8 et les versions ultérieures, surpassant largement `memcmp` et les méthodes de boucle traditionnelles, même sur .NET Framework. Pour les petits tableaux, les boucles sont les plus rapides, mais l'avantage de `Span.SequenceEqual` augmente considérablement avec la taille du tableau. L'auteur recommande d'utiliser `IEnumerable.SequenceEqual` dans .NET 8+ et `Span.SequenceEqual` dans .NET Framework, en évitant `memcmp` et les implémentations personnalisées.

Lire plus