Unix

對大型二進製文件進行排序

  • July 25, 2016

是否有用於對包含固定長度二進制記錄的大文件進行排序的 Unix 實用程序?

換句話說,我正在尋找類似 sort(1) 但具有固定長度記錄的二進製文件。

我可以將文件轉換為文本,然後使用 sort(1) 進行排序,然後再轉換回二進製表示,但我正在尋找更節省時間和空間的東西。

原來你很幸運;有一個 GNU 風格的 unix 程序可以做到這一點:bsort

bsort是一種超高效的就地基數排序實現,在處理大於 ram 的文件時會仔細注意記憶體訪問模式。高效我的意思是能夠從 2014 年中期開始在硬體上最好的http://sortbenchmark.org的 2014 年能源效率 10^8 記錄排序 - 記錄是 889 焦耳,這個的早期原型能夠排序相同庫存 macbook pro 上的 335 焦耳。對於完全適合 ram(三位數兆字節)的“小型”數據集,它比 libc 的 qsort 庫快約 3 倍。

引用自:https://serverfault.com/questions/402920