看了那篇Unix spell跑在64kB内存里的文章,最戳我的不是"省",而是它的核心思路:Bloom filter。简单说宁可接受万分之一的误判,也要把词典塞进那点内存里。换句话说,当年的程序员敢拿"确定性"换"生存空间"。
反观现在的开源圈,风气刚好反过来。什么都要精确、什么都要完备,一个查词工具恨不得内置三本词典加云端同步,体积几百MB起步。结果嵌入式设备跑不动,老电脑带不起,第三世界的学校用不了。
其实概率型数据结构这几年很成熟了,Bloom filter、HyperLogLog、Count-Min Sketch,Redis和ClickHouse都在用,说明这条路工业上完全走得通。只是做工具类开源项目的人很少往这想,默认用户内存管够。
我挺好奇的:如果给你手上维护的项目加一条硬约束,比如内存不准超过16MB,你会砍掉什么?我猜砍完之后,剩下的才是这东西真正的核心价值。有没有人真试过,来聊聊