Разработчики FFmpeg заявили о 100-кратном ускорении благодаря рукописному ассемблерному коду
Разработчики проекта FFmpeg вновь заявили о значительном повышении производительности благодаря использованию рукописного ассемблерного кода. Согласно последнему патчу, пользователи могут ожидать «100-кратного ускорения» в кроссплатформенном приложении для транскодирования мультимедиа с открытым исходным кодом. Однако разработчики поспешили уточнить, что заявленные 100x относятся только к одной функции, а не ко всему FFmpeg.
ВАЖНО: FFmpeg ускорился в 100 раз благодаря рукописному ассемблеру
13:55:30 <•haasn> rangedetect8_avx512: 121.2 (100.18x) — возможно, это самое большое ускорение, которое я видел до сих пор
16 июля 2025«Самое большое ускорение, которое я видел до сих пор»
В ноябре прошлого года мы сообщали о повышении производительности FFmpeg, которое могло ускорить определенные операции до 94 раз. Последний патч с рукописным ассемблерным кодом увеличил производительность функции «rangedetect8_avx512» на 100,73%. Если ваш современный процессор не поддерживает AVX512, вы все равно можете ожидать ускорения на 65,63% благодаря использованию кода rangedetect8_avx2.
Где можно ощутить это ускорение? В последующих твитах разработчики FFmpeg признают: «Это одна функция, которая теперь работает в 100 раз быстрее, а не весь FFmpeg». Позже они уточнили, что эта функция, скорость которой может увеличиться на 100% в зависимости от системы, является «малоизвестным фильтром».
Малоизвестность функции означала, что она не была приоритетной для разработчиков до сих пор. Однако также стало известно, что код фильтра был переписан с использованием концепции SIMD (Single Instruction, Multiple Data) для значительного улучшения параллельной обработки на современных мощных процессорах.
Очевидно, что компиляторы — программы, преобразующие код высокого уровня в ассемблерный (машинный) код — до сих пор не могут конкурировать с рукописным ассемблером. Или, как сегодня написали в Twitter разработчики FFmpeg, «аллокатор регистров в компиляторах отстой».
Изображение: FFmpeg
Проповедники ассемблера
Возвращаясь к золотому веку домашних компьютеров 1980-х и 1990-х, когда системы с фиксированными характеристиками имели жизненный цикл в полдесятилетия и строго ограниченные вычислительные ресурсы, оптимизация рукописного ассемблерного кода играла большую роль в ускорении компьютеров, игр и другого ПО.
FFmpeg, пожалуй, один из немногих оставшихся «проповедников ассемблера». Команда разработчиков даже ведет «школу».
Инструменты и библиотеки FFmpeg работают на Linux, macOS, Microsoft Windows, BSD, Solaris и других системах. Один из самых популярных видеоплееров, VLC, использует библиотеки libavcodec и libavformat из проекта FFmpeg.
Источник: Tomshardware.com
0 комментариев