home.social

#性能優化 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #性能優化, aggregated by home.social.

fetched live
  1. GitHub - cockroachdb/swiss: Go port of Google's Swiss Table hash table

    Link
    📌 Summary:
    Swiss
    Map 是一個基於 Google 的 Swiss Tables 雜湊表設計的 Go 實現,與 Go 的內建 map 相似,但在性能上有顯著提高,尤其適用於大尺寸的雜湊表。雖然在小型雜湊表方面,Go 的內建 map 表現稍佳,但隨著資料量增加,Swiss Map 的性能優勢則明顯展現。其引入了可擴展雜湊層以支援增量調整,並且具備僞隨機迭代能力,能在修改過程中保持穩定性,但目前實現僅支援小端 CPU 架構。

    🎯 Key Points:
    - Swiss
    Map 改進了 Go 內建 map 的性能,特別是在處理大尺寸資料時。
    - 針對小型雜湊表(最多 6 個元素)時,Go 的內建
    map 利用快速路徑優化性能較好。
    - Swiss
    Map 引入可擴展雜湊層以減少大規模資料插入操作的延遲。
    - 提供了類似於 Go 內建
    map 的迭代穩定性,並在迭代時支持隨機化結果。
    - 實現目前需在小端 CPU 架構上運行,未來計劃加入 SIMD 支援以進一步提昇性能。

    🔖 Keywords:
    #SwissMap #雜湊表 #性能優化 #可擴展 #迭代穩定性

  2. Tech Notes: The Success and Failure of Ninja

    Link
    📌 Summary: 這篇文章回顧了開源建構系統 Ninja 的成功與失敗。Ninja 在推出後獲得了廣泛的應用,包括 Chrome 和 Android 等大型專案。作者反思了它的設計架構,指出在程式設計中,社會因素往往比技術問題更重要。他強調 Ninja 的主要優勢在於其簡單、快速的構建過程,並對其與其他系統(如 Make)進行了比較,闡述了 Ninja 在設計上選擇的幾個關鍵決策。此外,作者也分享了自己作為開源維護者的挑戰與感受,強調社羣互動的複雜性。

    🎯 Key Points:
    - Ninja 是一個開源的建構系統,主要用於提高編譯速度。
    - 與 Make 相比,Ninja 的設計更簡單,執行速度更快,特別是在處理大型專案時。
    - 作者認為在程式設計中,解決社會性問題往往比技術問題更為重要。
    - Ninja 的架構創新包括將命令與文件分開創建行動圖,提升了靈活性和維護性。
    - 他分享了作為開源維護者的經歷,包括遇到的困難與社羣的互動。

    🔖 Keywords: #Ninja #開源 #建構系統 #性能優化 #社羣互動

  3. Cyanide - Improve an algorithm performance step by step

    Link
    📌 Summary: 本文描述了作者在開發一個名為RaBitQ的近似最近鄰搜索算法時,如何逐步改善其在Rust中的性能。作者首先設置了環境並選擇了合適的數據集,接著利用工具進行性能分析,並對實現中的各種效率低下的部分進行了優化,特別是在內存管理、SIMD指令的使用以及數據結構的變更方面。儘管最初的Rust版本性能較C++版本慢,透過上述的步驟,最終實現了與C++版本相當的性能,且獲得了明顯的效能提升。

    🎯 Key Points:
    - 環境準備與數據集:作者選擇了sift_dim128_1m_l2和gist_dim960_1m_l2兩個數據集作為基準。
    - 性能分析工具:使用samply進行性能剖析,確保代碼的優化。
    - SIMD的應用:手動撰寫SIMD實現以提高運算速度,包含AVX2的優化。
    - 內存管理與數據結構:通過預分配內存和整合數據結構,減少clone的使用,提升性能。
    - 最終改善:經過一系列優化後,Rust實現的性能達到與C++相同的水平,並減少了執行時間。

    🔖 Keywords: #RaBitQ #Rust #性能優化 #SIMD #數據集

  4. Optimizing Postgres table layout for maximum efficiency

    Link
    📌 Summary: 本文探討在Postgres數據庫中,表格數據列的排列順序對存儲大小和性能的影響。透過實際案例,顯示重新排序數據列可使表格和索引大小減少多達20%。Postgres的數據對齊機制在提高存取速度的同時,偶爾也會導致不必要的空間佔用,從而影響存儲效率和系統性能。作者建議適當排列列的順序,以促進最佳的數據對齊並提高數據庫效能。

    🎯 Key Points:
    - 數據對齊會影響表格和索引的存儲需求,甚至可能導致空間浪費。
    - 重排列的順序可以顯著提升存儲效率,並提高查詢性能。
    - 數據類型的對齊要求會涉及4-byte或8-byte的公式。
    - 對應的實驗顯示,對齊良好的數據表在存儲上可節省大量空間。
    - 在開發早期採用良好的對齊策略,可減少未來的重構負擔。

    🔖 Keywords: #Postgres #數據對齊 #性能優化 #表格結構 #存儲效率

  5. Playing with BOLT and Postgres - Tomas Vondra

    Link
    📌 Summary: 本文探討了Tomas Vondra使用LLVM的BOLT工具優化Postgres性能的實驗。作者首先闡述在基準測試中二進制佈局對性能的影響,介紹了如何收集性能資料並利用BOLT進行調整。BOLT旨在根據工作負載優化二進制佈局,雖然在實驗中獲得了高達40%的性能提升,但也面臨了一些挑戰,如與舊版本LLVM的兼容性問題及特定功能的跳過。在OLTP和OLAP基準測試中表明,特定的性能配置檔對結果影響顯著,作者持保留態度,但認為透過BOLT的研究有助於未來的效能優化。

    🎯 Key Points:
    - 性能基準測試中,二進制佈局對性能影響關鍵,但變化微小(通常低於1%)。
    - BOLT工具旨在通過分析工作負載優化二進制佈局,且作者探索隨機佈局的替代方案。
    - 在實驗中,使用BOLT後的pgbench性能提升30%-40%,而TPC-H查詢增進約5%-10%。
    - 儘管結果積極,但某些優化過程中出現崩潰及錯誤,需進行進一步探索以解決這些問題。
    - 收集配置檔時,特定工作負載的重要性不容忽視。

    🔖 Keywords: #BOLT #Postgres #基準測試 #性能優化 #LLVM

Share on Mastodon

Enter the server where you have an account.