1.有没有快速分组,合并的算法?
2.单线程合并太慢了,并行合并会不会大幅度提高合并效率?
3.欢迎提出任何意见或者建议。
1.有没有快速分组,合并的算法?
2.单线程合并太慢了,并行合并会不会大幅度提高合并效率?
3.欢迎提出任何意见或者建议。
我觉得可以使用分治法,开多个线程,并将任务分解,类似Java的Fork-join框架,大概是这么个流程
def combine(L, R):
if R - L < 10:
return combine10files_in_thread(L, R)
else:
mid = (R - L) // 2
a = combine(L, mid)
b = combine(mid + 1, R)
combine2file(a, b)
def combine10files_in_thread(L, R):
#在新线程合并10个文件
pass
def combine2file(a,b):
#合并稍微大一些的文件并删除中间文件
pass
1 回答3.4k 阅读✓ 已解决
1 回答2.8k 阅读
2.5k 阅读
1 回答546 阅读✓ 已解决
1 回答1.2k 阅读
1 回答516 阅读✓ 已解决
你没有说明合并文件时有没有什么要求,所以先假设只是将两个文件简单地拼接在一起,没有什么额外的操作。那么,整个过程的最大瓶颈其实应该是文件读写操作,所以我觉得开多线程来操作对性能应该没什么提升,老老实实地逐个读取文件,在尾部追加可能反而是最快的。