看了Unix spell那篇文章,感触挺深。64kB内存里跑拼写检查,靠的不是硬扛,而是哈希表加位图压缩,把词典塞进去。说白了就是用脑力换算力,硬件不够算法来凑。
反观现在,动不动就是扩容、加机器、升配置。内存不够了?再买一条。延迟高了?加缓存层。遇到问题第一反应是堆资源,而不是回头想想自己的数据结构是不是选错了。这种惯性在云原生时代尤其明显,反正机器是租的,按量付费,优化算法的收益很难算进KPI里。
我觉得开源项目真正的生命力,恰恰在于这种约束下的设计:代码量小、依赖少、任何人都能读懂、能移植、能改。那些几十万行的巨型项目,看着唬人,实际上没人敢动。spell几十年前的思路今天还能被拿出来讨论,就是因为它干净到可以被完整理解。
精炼比堆砌难,但也值钱得多。下次性能出问题,先别急着加机器,问问自己:算法真的尽力了吗?