计划于 4 月发布的 fedora 32 有望给python 开发者带来惊喜。fedora 项目的变更介绍页面显示,在构建 python 解释器时,开发团队添加了-fno-semantic-interposition编译器/链接器标志(compiler/linker flag),它将会显著提升性能,当然具体的性能改进效果取决于工作负载,官方提供的数据是最多可以提升 27%。
诸如 nbody,scimark,django,光线跟踪之类的测试用例提升了 20% 至 27% 的性能,而通过 pyperformance 测得的性能提高了 5% 至 20%。
而这给用户带来的变化是他们将不再能够使用 ld_preload 覆盖来自 libpython 的符号,不过官方认为这是提升速度的不错的折衷方案。
根据 gcc 关于语义插入(semantic interposition)标记的文档,“某些对象格式,例如 elf,允许动态链接器插入符号。这意味着对于从 dso 导出的符号,编译器无法按预期在执行过程中传播、内联和其他优化,但相关的函数或变量会有变化。尽管该功能很有用,例如,通过调试实现重写内存分配功能,但这在代码质量方面是昂贵的。使用-fno-semantic-interposition,编译器假定如果函数发生插入的情况,则覆盖函数将具有完全相同的语义(和副作用)。类似的,如果变量发生插入的情况,则变量的构造函数也将相同。该标志对显式声明为内联的函数无效,对弱声明的符号同样无效。”
据了解,这些改进最初是针对fedora 32 开发的,fedora 项目的开发人员当时在研究静态链接 python 的方案以提高性能。后来由于社区的反馈,他们缩小了范围,只希望优化 fedora 32 中的 python,并将其限制为使用-fno-semantic-interposition编译器标志来构建 python。
你会不会刷机主流机型刷机基础教程合集
语音芯片的分段变换采样频率的实现
关于霍尼韦尔精益制造的分析和应用介绍
如何保护二线制变送器
NVIDIA发布支持自主机器新平台Isaac,实现人工智能和虚拟世界机器人模拟器全套方案
Fedora 32系统性能提升,Python脚本运行速度提高
MAX1811锂电池充电器制作,max1881 battery charger
cascade eVue IV数字显微镜的介绍
博通公司面向中国有线运营商扩展C-DOCSIS产品线
解决方案|医疗器械行业经销商管理系统解决方案
MAX6800,MAX6801,MAX6802低功耗微处理器复位电路
1N5364B 直插 DO-201 33V 稳压二极管
LT3042和LT3045适用于噪声敏感的设计应用要求
日本推出世界上最先进的超快速电动汽车充电器
高通865采用7nm工艺+集成5G芯片,华为该如何应对
2Q19半导体财报业绩出炉:高通、赛灵思、AMD和NXP,谁能脱颖而出?
氨水浓度检测仪实现安全精准的氨水测量-欧森杰
首届网易HoloKit AR开发者社区官网上线_宣布首款AR全息女团建设计划
行车记录仪方案 联发科低功耗迷你安卓主板
浅谈餐饮油烟污染危害及系统解决方案