linux 核心的 list_sort 實作考量
在 linux 核心的 list_sort 使用 buttom-up merge sort 實作排序,buttom-up 與 top-down 的差異在於 buttom-up 少了 partition 這一步驟。
此作法可以省去 recursive 和 stack 的使用(會佔用大量記憶體的寫法,並且會較常去 catch 記憶體更新 cache 內容)
其效能比較根據如下(q_sort 為 lab0-c 實作之排序):
q_sort#nodecache-missesbranchesinstructionscontext-switch1000346977,9884516,04010100003,3403621,93744305,89500100000543,05326326,21194,3295,3471010000007491,55474,6974,191731,6153,305510
list_sort#nodecache-missesbranchesinstructionscontext-switch1000248977,7798519,92400100004,1257614,20284329,38450100000439,19226258,06964,3642,0292310000005824,68914,6028,350731,6579,34489