FFmpeg项目的开发者通过手写汇编代码,成功将“rangedetect8_avx512”这一特定函数的速度提升了100.73%。尽管这一显著提升仅限于单个函数而非整个FFmpeg应用,但即使在不支持AVX512的处理器上,使用AVX2代码路径也能获得65.63%的性能提升。开发者解释称,该函数被重写并应用了SIMD(单指令多数据)处理概念,实现了大幅改进的并行处理,同时也指出编译器在寄存器分配方面仍有不足。FFmpeg是少数坚持使用手写汇编优化的项目之一,并且拥有专门的汇编教学“学校”。
⭐ FFmpeg开发者通过手写汇编代码,成功将“rangedetect8_avx512”函数性能提升了100.73%。这一技术突破展示了汇编语言在特定场景下超越编译器的优化潜力,为视频处理领域带来了显著的效率提升。
🚀 即使在不支持AVX512指令集的处理器上,通过优化代码路径(如rangedetect8_avx2),也能实现65.63%的性能提升。这表明汇编优化具有广泛的适用性,能够惠及更多用户群体,提高FFmpeg的整体运行效率。
💡 该性能提升主要得益于对“冷门过滤器”代码的重写,并采用了SIMD(单指令多数据)处理概念,大幅增强了并行处理能力。这体现了对细节优化的重视,以及在特定功能上追求极致性能的决心。
⚙️ 开发者强调,编译器在寄存器分配方面仍存在不足,这正是手写汇编能够实现大幅性能超越的关键原因。FFmpeg项目坚持使用汇编优化,并设有专门的教学“学校”,显示了对底层技术和人才培养的重视。
快科技7月18日消息,FFmpeg项目的开发者们再次通过手写汇编代码实现了显著的性能提升,开发者称:“手写汇编代码使FFmpeg速度提升100倍,这可能是目前我所见到的最大速度提升”。
不过其很快澄清,这一100倍的提升仅适用于一个特定函数,而不是整个FFmpeg应用。

通过最新的手写汇编补丁,应用中的“rangedetect8_avx512”性能提升了100.73%。即使用户的处理器不支持AVX512,使用rangedetect8_avx2代码路径时,仍可获得65.63%的性能提升。

开发者们在后续的推文中承认:“这是一个现在快了100倍的单一函数,而不是整个FFmpeg。”他们进一步解释说,这个可能享受100%速度提升的功能是一个“较为冷门的过滤器”。
由于该功能的冷门性,它直到现在才被开发者优先考虑,该过滤器代码被重新编写,采用了SIMD(单指令多数据)处理概念,从而实现了大幅改进的并行处理。
显然,编译器仍然无法与手写汇编相竞争,或者正如FFmpeg所说:“编译器的寄存器分配器很糟糕。”

FFmpeg是少数几个仍然坚持使用手写汇编代码优化的项目之一,团队甚至运营着一所“学校”,教授手写汇编代码的技巧。
FFmepg是一套视频音频的完整解决方案,提供了视频解码、编码、后期处理等一系列功能,对世界上千奇百怪的视频音频编码有着完善的支持。
