Martin Finkel presenta un análisis técnico detallado que compara el rendimiento de un filtro de desenfoque gaussiano en VLC implementado en C contra una versión portada línea por línea a C#. El estudio, realizado en un entorno de producción real con un clip de 1080p, busca determinar si la gestión de memoria de C# mediante el recolector de basura afecta negativamente al rendimiento en comparación con el código C nativo de VLC.
El análisis se divide en tres rondas. En la primera, la versión C# lineal toma un 23% más de tiempo por frame que el C original. La segunda ronda optimiza el algoritmo en ambos lenguajes mediante técnicas como la sustitución de divisiones por multiplicaciones y el uso de memoria secuencial, logrando que la versión C# sea 2.5 veces más rápida que el código original de VLC, aunque sigue siendo un 24% más lenta que la versión C optimizada. La tercera ronda introduce SIMD AVX2 para ambos lenguajes, permitiendo procesar 16 píxeles por instrucción.
Los resultados finales muestran que, con optimizaciones adecuadas, la versión C# se acerca al 8% de la versión C en la primera ronda y alcanza velocidades competitivas en la tercera. El artículo destaca que la brecha inicial se debía en gran parte a la generación de código por RyuJIT y a la necesidad de ajustar los límites de bucle y el uso de punteros de 64 bits. Este trabajo demuestra que C# es viable para plugins de video de alto rendimiento cuando se aplican optimizaciones específicas de compilación y algoritmo, desmitificando la creencia de que el recolector de basura impide el rendimiento nativo en este contexto.
