@
phrack #15
突然想起来,zram 可能行不通。。
sha1 的结果,是不是相当于随机数据?随机数据,压缩不了啥吧。。
即,256 GB 内存,当不了 512 GB 用?全都用来存压缩比 100% 后的数据了?
@
cabbage #57
需要保留 27 行原始 string ,在小根堆里。
第二步目的:检查出各块中,偏移量非最小的重复行,记录进删除名单中。
第二步时,已经有 26.5 个 240GB 的、排序好的块。
参考多路归并,可以流式构造出有序的 (string, offset, chunk_index)。
当 string 与上一个不同时,说明碰到偏移量最小的新行了(即,全文首次出现)。
当 string 与上一个相同时,说明重复行了,此时往 "to_del_${chunk_index}.txt" 里记录 offset 。
(可以攒多点再写,反正只用了 27 个字符串 + 27 * 1GB 缓冲区,还剩 200+GB 内存呢。。)
以前写过类似的,10+ MB 内存去重 13 GB 文件,里面也有用到多路归并:/t/1031275#reply15