- La mayor aceleración de FFMPEG afecta a una sola función que pocas personas habrán oído hablar
- El ensamblaje escrito a mano regresa en un filtro de nicho que la mayoría de los usuarios nunca tocarán
- AVX512 le da a FFMPEG una ganancia absurda de 100x, pero solo si su CPU la admite
El proyecto FFMPEG, conocido por impulsar algunos de los software de edición de video y herramientas de medios más utilizadas, está en los titulares nuevamente.
Los desarrolladores afirman haber logrado lo que llaman “la mayor aceleración hasta ahora”, ofreciendo una ganancia de rendimiento de 100x en una actualización reciente.
La captura? Solo se aplica a una función única y oscura, y los medios para lograrlo están levantando las cejas: código de ensamblaje escrito a mano, una técnica en gran parte vista como desactualizada por la mayoría de los desarrolladores de hoy.
La codificación de ensamblaje de las chispas de nostalgia y escepticismo
El lenguaje de ensamblaje, una vez esencial para aprovechar al máximo el hardware limitado en los años ochenta y noventa, se ha convertido en una práctica de nicho.
Sin embargo, los desarrolladores de FFMPEG continúan dependiendo de ella para una optimización extrema, llamándose a sí mismos “evangelistas de la asamblea”.
En su último parche, reescribieron un filtro llamado Rangedetect8_AVX512 utilizando instrucciones AVX512, parte de un kit de herramientas SIMD moderno (instrucciones individuales, datos múltiples) que ayuda a las CPU a realizar múltiples tareas en paralelo.
En los sistemas sin soporte AVX512, la variante AVX2 aún ofrece una mejora del 65.63%.
Como señala el equipo, “es una función única que ahora es 100 veces más rápida, no todo de FFMPEG”.
Esta noticia sigue a un impulso similar reportado en noviembre de 2024, donde otro parche llevó ciertas operaciones a 94x más rápido.
En ese caso, parte de la brecha de rendimiento anterior surgió de la complejidad del filtro no coincidente: la versión genérica C utilizó una convolución de 8 taps, mientras que la versión SIMD utilizó un enfoque de 6 tapas más simple.
Incluso la compilación de la versión C en el modo de lanzamiento con un mejor compilador como Clang podría cerrar más del 50% de la brecha, lo que sugiere que algunas de las ganancias de velocidad reclamadas pueden haber sido exageradas al comparar el peor de los casos con las mejores condiciones.
“Registrar el asignador chupa los compiladores”, los desarrolladores bromearon en las redes sociales, destacando las ineficiencias del compilador.
A pesar de las advertencias, este enfoque renovado en la codificación de bajo nivel ha provocado nuevas conversaciones sobre la optimización del rendimiento.
FFMPEG potencia todo, desde VLC Media Player hasta innumerables herramientas de descarga de YouTube, por lo que incluso las pequeñas mejoras en filtros aislados pueden ondularse a través de un software ampliamente utilizado.
Sin embargo, vale la pena señalar que tales resultados a menudo son difíciles de replicar y aplicar en partes más amplias de la base de código.
Si bien este tipo de optimizaciones profundas son impresionantes, es posible que no reflejen mejoras del mundo real para los usuarios cotidianos de edición de imágenes con software de edición de video.
A menos que otras funciones básicas reciban un tratamiento similar, la promesa de un FFMPEG más rápido podría permanecer limitado a los puntos de referencia técnicos.
Vía Tomshardware