快乐 ❎
快乐 ❎

@syeerzy

3 Tweets 10 reads Jul 31, 2023
刚才听一个程序员抱怨,说接了个不可能完成的需求, 大致是有一个巨大的txt文件,里面有不到一亿行数据,每行是一个8位座机号码,可以保证没有重复。
需要重新从小到大排序, 可使用的内存非常有限(不到100兆,在一台ARM 嵌入式设备上运行)
归并排序花了一个多小时,客户只能接受1分钟以内。
我记得曾经在某本书的开头看见过类似的例子, 因为cpu和内存远比硬盘快, 所以良好的整体性能下, 总运行时间应该差不多等于把文件读出来再写回去的时间, 我让他测试一下那个大文件读写一次的时间, 如果一分钟读写不完,那么可以有充足理由告诉对方,这件事无解,因为读出来写回去都不够。
结果读写一次花了四十多秒, 然后我告诉他, 应该是有办法大约在四十多秒里解决, 但肯定不是归并排序了。
他说归并是教科书教的内存不足情况下的硬盘排序首选, 我告诉他, 算法是死的,人是活的。

Loading suggestions...