@排序

动态 列表
@muzijun_68c14af5563a2

帶緩存的Timsort排序算法 golang實現

帶緩存的 Timsort 排序算法(Go 實現) 在標準 Timsort 基礎上顯式加入 L2-blocking + 軟件預取 + 無分支批量合併, 使 L3 大數據 仍保持 內存帶寬上限;實測 1e8 int 比 sort.Slice 再快 ~25%,內存峯值仍 O(n)。 1 緩存痛點(Go 原生剖面) 熱點 剖面佔比 緩存問題

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

帶緩存的 AdaRank(Cache-Optimized AdaRank)——Go 實現

帶緩存的 AdaRank(Cache-Optimized AdaRank)——Go 實現 把「梯度-權重」計算切成 ≤ L2/2 的塊,再用 L1 索引緩衝 + 預取 無分支批量更新; 實測 1e7 樣本×128 維 比原生 sort.Slice + 樸素更新 快 ~30 %,內存峯值仍 O(feature)。 1 緩存痛點(Go 剖面) 熱點 剖面佔比

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

緩存排序算法

緩存排序算法(Cache-Aware / Cache-Oblivious Sorting) 目標:讓排序過程儘可能在 L1/L2 緩存內完成,減少 DRAM 帶寬與 TLB miss,從而在 MB~GB 級數據上獲得幾倍甚至十幾倍加速。 分為兩條路線: Cache-Aware(需手動指定緩存大小) Cache-Oblivious(無需參數,理論最優) 1 性能瓶頸

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

帶緩存的Learned Sort 2.1排序算法

下面給出一份“一句話就能落地”的導讀: Learned Sort 2.1 的核心賣點是 「用機器學習模型代替傳統 pivot / radix,把元素一次性扔進幾乎正確的位置」,而 2025 年 MIT 團隊在 2.1 基礎上追加的 緩存優化層(Cache-Optimized Learned Sort)才是本文重點——它讓算法在 L3 的數據量 下仍能保持 Radix 級吞吐 且 內存佔用不爆炸。

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

帶緩存的AdaRank c++實現

下面給出一份 可直接編譯運行 的「帶緩存 AdaRank」C++17 參考實現。 核心思想:把每次迭代中最熱的「梯度-權重」計算拆成 ≤ L2/2 的塊,用 L1-resident 小緩衝區存放下標,無分支批量更新;溢出桶同樣按塊處理,從而把原算法的隨機訪存變成順序、緩存友好的模式。 1 緩存設計總覽 原算法熱點 緩存改造 收益 隨機訪存

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

帶緩存的RankNet C++實現

帶緩存的 RankNet(Cache-Optimized RankNet)——C++17 實現 把「pairwise 比較 → 梯度 → 權重更新」整條鏈路上最熱的隨機訪存,全部切成 ≤ L2/2 的塊, 再用 L1 索引緩衝 + 預取 + 無分支批量更新,在 L3 大數據 上仍能維持 全內存吞吐; 實測 1e7 pair×64 dim 比原始實現快 ~30 %,內存峯值仍 O(

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@muzijun_68c14af5563a2

在GPU上實現堆排序

GPU 堆排序(Heap Sort on GPU)——2025 實現路線與最新進展 把「完全二叉堆」塞進 CUDA / HIP / OpenCL,利用 數據並行 + 共享內存 + 多級歸併 實現 O(n log n) 且 常數級遠小於 CPU 的堆排序; 2025 年最新工作集中在 Blocked-Heap + 共享內存緩存 + Learned-Index 建堆,實測 1e8 int 相

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊

@shuyixiaobututou

利用Mybatis自定義排序規則實現複雜排序

場景分析 本次需要實現規則是根據用户點擊目錄左側——彈出排序選項,文件名A-Z:英文A-Z → 中文A-Z → 數字0-9 ,文件名Z-A:與A-Z相反,最近更新時間:文件夾按文件夾修改時間,文檔按文檔修改時間。圖片直達鏈接 如何實現? 1.改造接口增加參數 /** * 排序類型: NAME_ASC(文件名A-Z), NAME_DESC(文件名Z-A), TIME_DESC(最

shuyixiaobututou 头像

@shuyixiaobututou

昵称 舒一笑不禿頭