新闻动态

如何使用多线程加快文件查找速度!

2019-03-09

02 (6)

很多文件类的工具需要遍历目录获得整个目录中文件的信息再进行后续的操作,如果目标文件夹内文件数较多或目录层次较深时,遍历的过程将会很长,严重降低用户体验。

以Windows系统为例,一般使用FindFirstFile和FindNextFile这两个API对单层目录进行遍历,当发现子目录时再次调用这两个函数遍历,直到找不到新的文件夹。在目前的多核CPU环境下,可以使用多线程的方式加速这个过程。这里使用Linux内核源码并复制两次,整个文件夹包含195681个文件和13383个文件夹,因为系统对最近读取过的文件有缓存,在虚拟机中测试时使用虚拟机的快照功能,每次测试前先还原快照,确保不受系统缓存的影响。

在使用单线程时,遍历整个目录平均需要大约7.1秒,在使用8线程(虚拟机配置8核)同时对目录进行遍历时则只需要4.2秒,速度提升约40%。

上一篇:关于高速数据传输的介绍!

下一篇:文件传输工具-rsync使用介绍!

关注云语科技

wechat qrcode

微信扫一扫,获取最新资讯