通过优化,Python在Fedora 32上的运行速度可以提高27%


Python脚本的运行速度可能明显快于4月发布的Fedora 32。

最初是为Fedora 32开发的,开发人员正在研究静态链接Python以提高性能。但是由于反馈,他们缩小了范围,因为Fedora 32中的Python优化将其限制为使用-fno-semantic-interposition编译器标志来构建Python。

根据GCC关于语义插入标记的文档,“某些对象格式,例如ELF,允许动态链接器插入符号。这意味着对于从DSO导出的符号,编译器无法在预期中执行过程间传播,内联和其他优化尽管该功能很有用,例如,通过调试实现重写内存分配功能,但在代码质量方面是昂贵的。使用-fno-semantic-interposition,编译器假定如果函数发生插入,则覆盖函数将具有完全相同的语义(和副作用)。类似地,如果变量发生插入,则变量的构造函数也将相同。该标志对显式声明为内联的函数无效(在此位置,标记无效)。绝不允许插入来更改语义)和明确声明为弱的符号。”

Fedora开发人员发现,使用-fno-semantic-interposition构建Python可以提高高达27%的性能,具体取决于工作负载。诸如nbody,scimark,django,光线跟踪之类的测试用例在20%至27%的范围内提高了性能,而通过PyPerformance测得的性能提高了5%至20%的范围。

没有语义插入的更改的唯一次要缺点是LD_PRELOAD不能与Python一起使用以覆盖符号,但这不会影响很多符号。

有关此已完成更改的更多详细信息,请访问Fedora Wiki。

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2020-01/161990.htm

相关内容