头版Folia Daily Briefing
← 返回头版
科技

Unix spell检查器如何在64KB内存中运行

1970年代,AT&T的Douglas McIlroy重写了Unix spell检查器,面临着在PDP-11计算机有限内存中存储大规模词典的挑战。他将字典从25,000个词扩展到30,000个词,同时需要将其压缩到64KB的内存空间内。

1970年代,AT&T的Douglas McIlroy重写了Unix spell检查器,面临着在PDP-11计算机有限内存中存储大规模词典的挑战。[1]他将字典从25,000个词扩展到30,000个词,同时需要将其压缩到64KB的内存空间内。[1]

McIlroy采用了多种压缩技术来实现这一目标。[1]最初实现使用Bloom过滤器,由Dennis Ritchie提供实现代码,配置为400,000比特、11个哈希函数,误报率为1/2000。[1]随后他转向哈希压缩方案,通过计算得出最优哈希码宽度为27比特。[1]最终采用Golomb编码实现几何分布压缩,达到了13.60比特每词的压缩率。[1]

这一压缩率接近理论极限13.57比特每词。[1]为了进一步提升查询速度,McIlroy加入了分区方案,虽然存储开销增至约14比特每词,但换取了显著的性能提升。[1]


Unix spell数据压缩Golomb编码内存优化Douglas McIlroy