Python-3.12.3 新版本發(fā)布 & 性能提升
共 2680字,需瀏覽 6分鐘
·
2024-04-16 12:00
概要
2024 年 4 月 Python 發(fā)布了 python-3.12.3 版本,看了下它的更新日志,還是有不少提升的。讓我感覺比較有意思的是 re 這個老模塊也得到了性能提升,下面我們一起看一下新版本的 re 性能提升了多少。
場景
在網(wǎng)絡上我們經(jīng)常發(fā)現(xiàn),有些人如果使用了比較有攻擊性的辭藻,這些敏感詞就會被處理成 * 號。假設(shè)現(xiàn)在要把 “干” 字處理成 “*” 號 ,用 Python 來實現(xiàn),應該是類似于下面的一行代碼。
#!/usr/bin/env python3import reif __name__ == "__main__":print(re.sub("干", "*", "準備干一票大的"))
運行效果
python3 main.py準備*一票大的
想想如果官方通過算法改進提升了 re.sub 的性能,由于我們的程序直接依賴于它,理論上我們程序的性能也會跟著提上去。
在編程世界里,還真的這種好事;不用改代碼,只要升級一下 Python 版本就能坐享其成!于是我測試了一下 python-3.11.3 和 python-3.12.3 兩個版本在這個場景下的性能差異。
Python-3.11.3 性能表現(xiàn)
python-3.11.3 版本下 re.sub 執(zhí)行 500w 次觀察的耗時情況。
#!/usr/bin/env python3import refrom datetime import datetimedef bench():iters = 5000000start_at = datetime.now()for i in range(iters):re.sub("干", "*", "準備干一票大的")end_at = datetime.now()print("執(zhí)行耗時 {} \n".format(end_at - start_at))if __name__ == "__main__":bench()
運行三次耗時情況如下,基本穩(wěn)在了 4.5s 左右。
[]執(zhí)行耗時 0:00:04.480667[]執(zhí)行耗時 0:00:04.543946[]執(zhí)行耗時 0:00:04.524779
Python-3.12.3 性能表現(xiàn)
python-3.12.3 版本下 re.sub 執(zhí)行 500w 次觀察的耗時情況。
#!/usr/bin/env python3import refrom datetime import datetimedef bench():iters = 5000000start_at = datetime.now()for i in range(iters):re.sub("干", "*", "準備干一票大的")end_at = datetime.now()print("執(zhí)行耗時 {} \n".format(end_at - start_at))if __name__ == "__main__":bench()
運行三次耗時情況如下,基本穩(wěn)在了 3.7s 左右。
[]執(zhí)行耗時 0:00:03.725913[]執(zhí)行耗時 0:00:03.696319[]執(zhí)行耗時 0:00:03.703213
總結(jié)
In [1]: (4.5 - 3.7) / 4.5Out[1]: 0.17
3.11.3 版本耗時 4.5s ,3.12.3 版本耗時 3.7s ,算了一下提升了差不多 17% 左右。
我自己的環(huán)境都升級上去了,跑了段時間除了比之前快了一點之外,也沒發(fā)現(xiàn)什么問題;現(xiàn)在分享給大家。
官方下載地址:https://www.python.org/downloads/source/
這是一個專為國內(nèi) Python 開發(fā)者量身打造的資訊平臺,為你挑選最值得分享的文章、教程、開源項目、軟件工具、播客和視頻、熱門話題等內(nèi)容。
