透過一次GC調整使Python速度提高20%
Python有兩種型別的記憶體管理:
- 主要是引用計數。物件會跟蹤指向它們的變數的數量。如果這個數字達到了0,它們就會被立即刪除,而且是確定性的。在沒有統計資料支援的情況下,我猜測99.9%以上的記憶體是這樣處理的。
- 0.1%:這裡失敗的一個案例是如果你有一個迴圈(想想有配偶欄位的 Person 物件)。輸入垃圾收集 .它偶爾會執行,尋找遺漏的參考計數清理。
引用計數很好,但GC,它執行得太頻繁了。
觸發因素是當你分配的700個或更多的容器物件(類、資料集、圖元、列表等)超過已清理的數量時,會執行一個GC迴圈。
例如,當你做一個查詢:
recent = await PageHits.objects().filter(date >= today).to_list() |
如果該查詢中有接近 700 個結果,那麼您甚至在獲得完整列表之前就已經達到了 GC 週期。
我們在Talk Python Training上的站點地圖僅載入頁面就產生了 77 個 GC 週期,77!
training.talkpython.fm/sitemap.xml
但你可以改變它。
在應用程式啟動時嘗試此程式碼:
# clean up what might be garbage so far. gc.collect(2) # Exclude current items from future GC. gc.freeze() allocs, gen1, gen2 = gc.get_threshold() allocs = 50_000 # Start the GC sequence every 50K not 700 allocations. gen1 = gen1 * 2 gen2 = gen2 * 2 gc.set_threshold(allocs, gen1, gen2) |
在 Talk Python 上,我們看到整體速度提高了 20%,而記憶體使用沒有變化。
關於這種改進對於實際工作負載的現實性存在一些爭論。
這篇文章引起了相當多的討論。您可以在 Mastodon 執行緒上看到它。
相關文章
- Arduino調整小車速度UI
- 如何透過最佳化網站提高網頁開啟速度網站網頁
- android4.4調整音量調節速度Android
- 如何通過gzip和nginx來提高網站開啟速度及整體效能Nginx網站
- 透過 CancellationToken 提高 Web 效能Web
- FinalReference 如何使 GC 過程變得拖拖拉拉GC
- Win10滑鼠移動速度太快如何調整_win10調整滑鼠移動速度的步驟Win10
- 簡單有效的G1 GC調整技巧 - JAXenterGC
- Matlab繪圖(1)透過屬性檢查器調整繪圖Matlab繪圖
- Win10系統怎麼透過修改執行緒數提高OneDrive上傳速度Win10執行緒
- 房地產行業透過ERP系統開發提高企業整體資訊互通!行業
- 一次JVM GC長暫停的排查過程!JVMGC
- 一次JVM GC長暫停的排查過程JVMGC
- CRM透過四點提高辦公效率
- 提高首頁訪問速度 and 記錄一次Nuxt天坑UX
- 用免費TPU訓練Keras模型,速度還能提高20倍!Keras模型
- 一次調整arraysize減少邏輯讀
- LeetCode題解(Offer21):調整陣列順序使奇數位於偶數前面(Python)LeetCode陣列Python
- 如何透過 Serverless 提高 Java 微服務治理效率?ServerJava微服務
- 指數增強策略:如何透過動態調整權重擊敗滬深300?
- nebuly-ai/nebullvm:提高AI執行速度20倍的開源庫AILVM
- [PAT B] 1003 我要透過! (20 分)
- ubuntu透過終端調高音量Ubuntu
- Python 調整PDF頁面尺寸大小Python
- Python 調整Excel行高、列寬PythonExcel
- Win10電腦怎麼調整游標閃爍速度Win10
- 引數fast_start_parallel_rollback調整oracle回滾的速度ASTParallelOracle
- 記一次使用gdb診斷gc問題全過程GC
- .記一次使用gdb診斷gc問題全過程GC
- 如何提高MySQL DELETE 速度MySqldelete
- 【Python】透過Cython提升效能Python
- CRM透過五方面提高商機
- 記一次SQL調優過程SQL
- python的GCPythonGC
- 盤點使 macOS 應用流量透過代理的多種方式Mac
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- GC調優記錄(一)GC
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列