計(jì)劃于 4 月發(fā)布的 Fedora 32 有望給Python 開(kāi)發(fā)者帶來(lái)驚喜。Fedora 項(xiàng)目的變更介紹頁(yè)面顯示,在構(gòu)建 Python 解釋器時(shí),開(kāi)發(fā)團(tuán)隊(duì)添加了-fno-semantic-interposition編譯器/鏈接器標(biāo)志(compiler/linker flag),它將會(huì)顯著提升性能,當(dāng)然具體的性能改進(jìn)效果取決于工作負(fù)載,官方提供的數(shù)據(jù)是最多可以提升 27%。
諸如 nbody,scimark,django,光線跟蹤之類(lèi)的測(cè)試用例提升了 20% 至 27% 的性能,而通過(guò) PyPerformance 測(cè)得的性能提高了 5% 至 20%。
而這給用戶(hù)帶來(lái)的變化是他們將不再能夠使用 LD_PRELOAD 覆蓋來(lái)自 libpython 的符號(hào),不過(guò)官方認(rèn)為這是提升速度的不錯(cuò)的折衷方案。
根據(jù) GCC 關(guān)于語(yǔ)義插入(semantic interposition)標(biāo)記的文檔,“某些對(duì)象格式,例如 ELF,允許動(dòng)態(tài)鏈接器插入符號(hào)。這意味著對(duì)于從 DSO 導(dǎo)出的符號(hào),編譯器無(wú)法按預(yù)期在執(zhí)行過(guò)程中傳播、內(nèi)聯(lián)和其他優(yōu)化,但相關(guān)的函數(shù)或變量會(huì)有變化。盡管該功能很有用,例如,通過(guò)調(diào)試實(shí)現(xiàn)重寫(xiě)內(nèi)存分配功能,但這在代碼質(zhì)量方面是昂貴的。使用-fno-semantic-interposition,編譯器假定如果函數(shù)發(fā)生插入的情況,則覆蓋函數(shù)將具有完全相同的語(yǔ)義(和副作用)。類(lèi)似的,如果變量發(fā)生插入的情況,則變量的構(gòu)造函數(shù)也將相同。該標(biāo)志對(duì)顯式聲明為內(nèi)聯(lián)的函數(shù)無(wú)效,對(duì)弱聲明的符號(hào)同樣無(wú)效。”
據(jù)了解,這些改進(jìn)最初是針對(duì)Fedora 32 開(kāi)發(fā)的,F(xiàn)edora 項(xiàng)目的開(kāi)發(fā)人員當(dāng)時(shí)在研究靜態(tài)鏈接 Python 的方案以提高性能。后來(lái)由于社區(qū)的反饋,他們縮小了范圍,只希望優(yōu)化 Fedora 32 中的 Python,并將其限制為使用-fno-semantic-interposition編譯器標(biāo)志來(lái)構(gòu)建 Python。
-
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86227
發(fā)布評(píng)論請(qǐng)先 登錄
如何提高弧光保護(hù)裝置的動(dòng)作速度?
蕪湖,起飛!讓樹(shù)莓派性能飆升的小秘訣~

零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?

創(chuàng)建OpenVINO? Python腳本,運(yùn)行可執(zhí)行文件時(shí)遇到的報(bào)錯(cuò)怎么解決?
前端性能優(yōu)化:提升用戶(hù)體驗(yàn)的關(guān)鍵策略
華納云:VFS在提升文件系統(tǒng)性能方面的具體實(shí)踐
PCIe延遲對(duì)系統(tǒng)性能的影響
SSD硬盤(pán)對(duì)系統(tǒng)性能的影響
對(duì)比Python與Java編程語(yǔ)言
如何優(yōu)化DCS系統(tǒng)的性能
@視覺(jué)工程師丨15分鐘上手《AIDI3.2腳本開(kāi)發(fā)教程》視頻,請(qǐng)查收!

利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN
ubuntu下(python ver 2.7.6)運(yùn)行python demo_server.py后無(wú)反應(yīng)怎么解決?
ESP32-S2的循環(huán)運(yùn)行速度比ESP32慢很多是怎么回事?
Anthropic 發(fā)布Claude 3.5 Sonnet模型運(yùn)行速度是Claude 3 Opus的兩倍

評(píng)論