Cuello de botella de rendimiento de RPC de transmisión CoreWCF: Análisis post mortem de fallo en Stack Overflow

2025-05-08
Cuello de botella de rendimiento de RPC de transmisión CoreWCF: Análisis post mortem de fallo en Stack Overflow

El autor intentó usar CoreWCF para RPC de transmisión entre .NET Framework y .NET 8 para probar el rendimiento de la transferencia de números aleatorios. Sin embargo, después de publicar una pregunta en Stack Overflow, se cerró sin respuesta. El problema es que el servicio CoreWCF sigue consumiendo una cantidad significativa de CPU y escribiendo en la transmisión incluso después de que el cliente se desconecta. El autor sospecha un malentendido sobre cómo se supone que deben funcionar las transmisiones de WCF, lo que sugiere que las transmisiones de WCF pueden no ser adecuadas para manejar transmisiones de longitud desconocida. El artículo explora los desafíos de usar la transmisión de WCF para RPC de alto rendimiento y considera alternativas, como usar solicitudes de mensajes únicos o el modo de sesión, para mejorar el rendimiento y la confiabilidad.

Leer más
Desarrollo Transmisión

Span<T> supera a memcmp: grandes mejoras de rendimiento en comparaciones de arrays de bytes .NET

2025-03-30
Span<T> supera a memcmp: grandes mejoras de rendimiento en comparaciones de arrays de bytes .NET

Esta publicación compara varios métodos de comparación de arrays de bytes en .NET, incluyendo `memcmp`, bucles, `Enumerable.SequenceEqual` y `Span.SequenceEqual`. Los resultados muestran que `Span.SequenceEqual` ofrece el mejor rendimiento en .NET 8 y posteriores, superando significativamente a `memcmp` y a los bucles tradicionales, incluso en .NET Framework. Para arrays pequeños, los bucles son más rápidos, pero la ventaja de `Span.SequenceEqual` aumenta drásticamente con el tamaño del array. El autor recomienda usar `IEnumerable.SequenceEqual` en .NET 8+ y `Span.SequenceEqual` en .NET Framework, evitando `memcmp` e implementaciones personalizadas.

Leer más