手搓还能赢编译器?FFmpeg靠手写汇编,把一个功能提速100倍!

编译 | 苏宓

出品 | 优快云(ID:优快云news)

在高性能计算动辄卷上 AI、大模型和 GPU 加速的今天,还有人在默默手写汇编代码,并且——赢了编译器

开源且功能强大的音视频处理工具集 FFmpeg 的开发者最近又出手了。在他们刚刚提交的一个补丁中,通过手写汇编代码“手搓”了一段关键路径,成功让 FFmpeg 一个功能的性能得到大幅提升。据称,达到了“快 100 倍”的效果。

当然,开发人员随即也马上解释清楚:这不是整个 FFmpeg 都变快了,而是某个特定的功能模块,名为 rangedetect8_avx512,在应用了手动优化后获得了惊人的提速。

而即使你的设备并不支持新款 AVX512 指令集,使用 rangedetect8_avx2 版本的代码,也能感受到高达 64% 的性能提升

迄今为止,只有一个函数享受了如此极端的速度提升

很多人可能会好奇,汇编语言不是早就没人用了么?

其实不然。

FFmpeg 就是少数仍在广泛使用汇编代码的“忠实用户”之一。他们坚持在性能瓶颈处用汇编“手搓优化”,效果往往比现代编译器自动生成的指令更高效,甚至“拉开好几个数量级”。

这一点在他们的实际成果中体现得淋漓尽致。2023 年 11 月,FFmpeg 项目曾有一次类似的性能突破,当时某些操作速度提高了 94 倍

而这次的新补丁,更是把 rangedetect8 这一功能的处理速度提升到一个新的高度。

简单来看,rangedetect8 是 FFmpeg 中的一个视频过滤器(filter),用于对图像中的像素值进行“范围检测”。

虽然这个过滤器是“一个不太常用的功能”,但它是 SIMD(单指令多数据) 指令的绝佳测试场。手写汇编的方式,能更精准地控制 CPU 的指令执行方式和寄存器调度,大幅提升并行处理效率。这些,恰恰是编译器目前还很难做到的。

正因此,FFmpeg 在项目推文中对现代编译器提出了直言不讳的批评——“编译器的寄存器分配器太拉垮了。”

寄存器的调度和分配,是性能优化中的关键一环。而现代 C/C++ 编译器虽然足够智能,但在一些对极致性能要求苛刻的场合,手写汇编依然能拉出一大截差距。

这也是为什么一些高级性能工具,比如数据库引擎、视频转码器、图像处理库,至今还保留了手写汇编路径,作为“性能保底”的手段。

为什么还有人写汇编?

回溯到 1980–1990 年代家用计算机的黄金时期,硬件能力有限,内存、CPU资源稀缺,程序员几乎只能靠“榨干每一个指令周期”来提升性能。那时候写汇编,不是情怀,而是生存需要

而如今,即使资源已经极大丰富,但在某些对性能极度敏感的场景,比如:

  • 嵌入式设备和硬件驱动

  • 操作系统和编译器内核

  • 安全研究与逆向工程

  • 高性能计算(HPC)、视频处理

汇编依然是无法替代的“终极语言”。FFmpeg 项目的开发人员甚至还为此成立了“汇编优化学校”,鼓励更多开发者学习、传承这项古老而实用的技艺。

那么,你对手写汇编怎么看?在这个 AI 自动生成代码、LLM 自动补齐的时代,它还值得学习吗?

参考:

https://www.tomshardware.com/software/the-biggest-speedup-ive-seen-so-far-ffmpeg-devs-boast-of-another-100x-leap-thanks-to-handwritten-assembly-code 

推荐阅读:

旧手机先别扔!花不到70元,10年前旧手机「秒变」数据中心:下海识鱼8小时都没掉线

44万美元!马斯克重金悬赏“AI女友”开发者,网友:让我来

AI 搜索时代来了:“SEO 已死,GEO 万岁!”

2025 全球产品经理大会

8月15–16日·北京威斯汀酒店

互联网大厂&AI 创业公司产品人齐聚

12 大专题,趋势洞察 × 实战拆解

扫码领取大会 PPT,抢占 AI 产品新红利

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优快云资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值