文件夾同步算法概述

以前爲公司的產品完成過此功能,總的實現有點複雜,這裏說一下大概的算法.
1) 掃描本地同步目錄,記錄目錄下所有文件.
2)掃描遠程同步目錄,記錄目錄下所有文件,併發送到本地端.
3) 不分大小寫的排序本地/遠程同步目錄的文件列表。
4) 通過歸併比較,得到四組文件:本地僅有的文件,遠程僅有的文件,本地新的文件,遠程新的文件。
5) 根據用戶的選項,傳輸這四組文件。
對於處理大的文件夾(3萬以上),這裏存在幾個瓶頸:
1) 發送遠程同步目錄文件信息到本地,由於底層arm的緩衝區大小有限,過多的文件數據,會導致arm溢滿,導致session中斷,所以一次最多發送遠程同步目錄的文件5000個,大於5000的分多次發送.
2) 不分大小寫的排序,之前找的csdn上一個貼子的算法,速度極慢,後來用的是<<effect stl>>一書提供的例子,快得多了。
3) 排序:MFC用的STL排序函數用的就是快速排序,其最差速度爲n*n, 所以碰到某些數據速度極慢,而SGI的排序函數
用的是混合排序,最差速度是n*logn,所以無論何種數據,速度都會很快.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章