<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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 python3
          import re
          if __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 python3
          import refrom datetime import datetime

          def bench(): iters = 5000000 start_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 左右。

          [root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 執(zhí)行耗時 0:00:04.480667 
          [root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 執(zhí)行耗時 0:00:04.543946
          [root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 執(zhí)行耗時 0:00:04.524779




          Python-3.12.3 性能表現(xiàn)

          python-3.12.3 版本下 re.sub 執(zhí)行 500w 次觀察的耗時情況。

          #!/usr/bin/env python3
          import refrom datetime import datetime

          def bench(): iters = 5000000 start_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 左右

          [root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py執(zhí)行耗時 0:00:03.725913 
          [root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py執(zhí)行耗時 0:00:03.696319
          [root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py執(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/


          以上是今天的分享,最后推薦一下我的《Python潮流周刊》專欄。

          這是一個專為國內(nèi) Python 開發(fā)者量身打造的資訊平臺,為你挑選最值得分享的文章、教程、開源項目、軟件工具、播客和視頻、熱門話題等內(nèi)容。

          如果你覺得本文有幫助
          請慷慨分享點贊,感謝啦

          瀏覽 3155
          28點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          28點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天肏| 黄色污污污污污网站在线观看 | 黄色成人网站在线免费看 | 福利视频一区 | 69成人视 |