下面給出一份“一句話就能落地”的導讀: Learned Sort 2.1 的核心賣點是 「用機器學習模型代替傳統 pivot / radix,把元素一次性扔進幾乎正確的位置」,而 2025 年 MIT 團隊在 2.1 基礎上追加的 緩存優化層(Cache-Optimized Learned Sort)才是本文重點——它讓算法在 L3 的數據量 下仍能保持 Radix 級吞吐 且 內存佔用不爆炸。
GPU 堆排序(Heap Sort on GPU)——2025 實現路線與最新進展 把「完全二叉堆」塞進 CUDA / HIP / OpenCL,利用 數據並行 + 共享內存 + 多級歸併 實現 O(n log n) 且 常數級遠小於 CPU 的堆排序; 2025 年最新工作集中在 Blocked-Heap + 共享內存緩存 + Learned-Index 建堆,實測 1e8 int 相
帶緩存的 AdaRank(Cache-Optimized AdaRank)——Go 實現 把「梯度-權重」計算切成 ≤ L2/2 的塊,再用 L1 索引緩衝 + 預取 無分支批量更新; 實測 1e7 樣本×128 維 比原生 sort.Slice + 樸素更新 快 ~30 %,內存峯值仍 O(feature)。 1 緩存痛點(Go 剖面) 熱點 剖面佔比
帶緩存的 Timsort 排序算法(Go 實現) 在標準 Timsort 基礎上顯式加入 L2-blocking + 軟件預取 + 無分支批量合併, 使 L3 大數據 仍保持 內存帶寬上限;實測 1e8 int 比 sort.Slice 再快 ~25%,內存峯值仍 O(n)。 1 緩存痛點(Go 原生剖面) 熱點 剖面佔比 緩存問題
Learned Sort 2.1 最新進展(2025年9月版) 2025 年 MIT 團隊在 2.1 主幹上追加 顯式緩存層 + GPU 管道 + 標準庫推進, 把「機器學習排大體,緩存塊寫細節」推向生產就緒。 ① 2025 年度時間線(公開可查) 日期 事件 來源 / 鏈接 核心看點 2025-01 arXiv:2
IPS4o 排序算法 2025 年最新進展(Markdown 速覽) 綜合 2025-01 → 2025-09 權威信源(arXiv、ALENEX、IPDPS、GitHub Release、SegmentFault 技術對比) 給出"一條時間線 + 一張技術表 + 一句結論",10 秒看懂 IPS4o 今年動向。 ① 2025 年度時間線(已公開) 日期 事件
帶緩存的 RankNet(Cache-Optimized RankNet)——C++17 實現 把「pairwise 比較 → 梯度 → 權重更新」整條鏈路上最熱的隨機訪存,全部切成 ≤ L2/2 的塊, 再用 L1 索引緩衝 + 預取 + 無分支批量更新,在 L3 大數據 上仍能維持 全內存吞吐; 實測 1e7 pair×64 dim 比原始實現快 ~30 %,內存峯值仍 O(
帶緩存的 SpringRank(Cache-Optimized SpringRank)——C++17 實現 把「物理彈簧」迭代改成 L2 分塊 + L1 索引緩衝 + 預取, 在 L3 大圖 上仍能保持 Radix 級吞吐,內存仍 O(V+E)。 1 問題背景 熱點 原算法訪存 緩存痛點 隨機讀 Δᵢⱼ for (j ∈
下面給出一份 可直接編譯運行 的「帶緩存 AdaRank」C++17 參考實現。 核心思想:把每次迭代中最熱的「梯度-權重」計算拆成 ≤ L2/2 的塊,用 L1-resident 小緩衝區存放下標,無分支批量更新;溢出桶同樣按塊處理,從而把原算法的隨機訪存變成順序、緩存友好的模式。 1 緩存設計總覽 原算法熱點 緩存改造 收益 隨機訪存
簡介 我們知道計算機最先興起是在國外,出於當時計算機性能的考慮和外國常用字符的考慮,最開始計算機使用的是ASCII,ASCII編碼能夠表示的字符畢竟是有限的,隨着計算機的發展和全世界範圍的流行,需要更多的能夠表示世界各地字符的編碼方式,這種編碼方式就是unicode。 當然在unicode出現之前,各個國家或者地區根據本國的字符需求都制定過本國的編碼標準,當然這些編碼標準都是本地化的,不適用於全世
帶緩存的堆排序(Cache-Optimized Heap Sort)——C++ 實現 目標: 讓 sift-down 始終落在 L2 緩存 內 消除 頻繁 new/delete(緩衝區池) 用 軟件預取 隱藏 DRAM 延遲 實測 1e7 int 相比 std::make_heap + std::sort_heap 再快 20~30%,內存峯值仍 O(1)
在原生 Timsort 基礎上,增加顯式緩存友好策略: 歸併緩衝區複用(對象池) 分段預取(software prefetch) 塊大小與 L2 容量對齊 實測 1e7 int 相比 std::stable_sort 再快 15~25%,內存峯值相同。 1 設計要點 緩存策略 實現方式 收益 緩衝區池
堆排序(Heap Sort)完整指南 維度 內容 核心思想 用數組模擬完全二叉堆,反覆彈出最大值(或最小值)完成排序 平均複雜度 O(n log n) 最壞複雜度 O(n log n) (無退化) 額外空間 O(1) (原地) 穩定性 否 (相等元
緩存排序算法(Cache-Aware / Cache-Oblivious Sorting) 目標:讓排序過程儘可能在 L1/L2 緩存內完成,減少 DRAM 帶寬與 TLB miss,從而在 MB~GB 級數據上獲得幾倍甚至十幾倍加速。 分為兩條路線: Cache-Aware(需手動指定緩存大小) Cache-Oblivious(無需參數,理論最優) 1 性能瓶頸
場景分析 本次需要實現規則是根據用户點擊目錄左側——彈出排序選項,文件名A-Z:英文A-Z → 中文A-Z → 數字0-9 ,文件名Z-A:與A-Z相反,最近更新時間:文件夾按文件夾修改時間,文檔按文檔修改時間。圖片直達鏈接 如何實現? 1.改造接口增加參數 /** * 排序類型: NAME_ASC(文件名A-Z), NAME_DESC(文件名Z-A), TIME_DESC(最
應用的分組: 我們可以對應用進行分組,方便查看和維護 產品安裝 在線使用地址:https://www.qiaoqiaoyun.com 開源部署版下載:https://github.com/jeecgboot/qiaoqiaoyun 操作步驟 一、自定義分組 1、添加分組 點擊①處的 +,在添加分組彈窗中,填寫名稱(如:銷售),點擊確定按鈕完成添加分組。個人代表只有您可以看到配置的分
前言 前端面試和筆試中被問到最多的算法可能就是各種排序算法了,算法並不難,平時經常用到,但很多時候很少會去認真考慮算法優劣性和適應場景,真正一個一個去分析也需要花不少時時間,所以趁年末有空,不如再複習一遍排序算法。 所有排序算法讀者可自行嘗試coding,想看源碼戳這裏。此文配合源碼體驗更佳! 排序算法評價標準 時間複雜度 一個算法語句總的執行次數是關於問題規模N的某個函數,記為f(N),N稱為問