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。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:https://www.linuxidc.com/Linux/2020-01/161990.htm