2012年10月17日
摘要: 偶见有人在发起一个排序比赛,对27W左右的词进行排序输出,要求读取+排序+输出的时间最少。例子代码有一个简单的Java版本实现,大概的时间是在4xxms,然后是Go语言实现,大约在3XX ms。Go语言不懂,就不折腾了。Java的版本还是可以看看。时间分布上,读取2.8M的文件大约150ms,写大约100毫秒,感觉明显可以优化。第一步,修改读取方法,使用NIO的内存映射,直接开内存读取,时间下降到70ms,写入50ms左右,合计300多一点第二步,修改排序算法,修改原来的多线程,对读取的时候数据进行分组,各个线程直接排序即可,最后再归并,总时间下降到260ms左右第三步,尝试了读取的时候就分给 阅读全文
posted @ 2012-10-17 14:19 仙人指路 阅读(276) 评论(0) 推荐(0) 编辑