7月18日消息,FFmpeg项目的开发者们再次通过手写汇编代码实现了显著的性能提升,开发者称:“手写汇编代码使FFmpeg速度提升100倍,这可能是目前我所见到的最大速度提升”。
不过其很快澄清,这一100倍的提升仅适用于一个特定函数,而不是整个FFmpeg应用。
通过最新的手写汇编补丁,应用中的“rangedetect8_avx512”性能提升了100倍。即使用户的处理器不支持AVX512,使用rangedetect8_avx2代码路径时,仍可获得不小的性能提升。
开发者们在后续的推文中承认:“这是一个现在快了100倍的单一函数,而不是整个FFmpeg。”他们进一步解释说,这个可能享受100%速度提升的功能是一个“较为冷门的过滤器”。
由于该功能的冷门性,它直到现在才被开发者优先考虑,该过滤器代码被重新编写,采用了SIMD(单指令多数据)处理概念,从而实现了大幅改进的并行处理。
显然,编译器仍然无法与手写汇编相竞争,或者正如FFmpeg所说:“编译器的寄存器分配器很糟糕。”
FFmpeg是少数几个仍然坚持使用手写汇编代码优化的项目之一,团队甚至运营着一所“学校”,教授手写汇编代码的技巧。
FFmepg是一套视频音频的完整解决方案,提供了视频解码、编码、后期处理等一系列功能,对世界上千奇百怪的视频音频编码有着完善的支持。