高效遍历文件系统
来源:互联网 发布:胖胡斐 淘宝商城 编辑:程序博客网 时间:2024/05/20 06:27
较常见的遍历算法基于stat实现,例如:
if( stat( path, &_stbuf ) == 0 ) if( S_ISDIR( _stbuf.st_mode )) { //is a folder _dir = opendir( path ); if( _dir ) { travel_dir(...); } } else { //is a file }但基于stat的算法,受限于stat的性能,在一些极端情况下(如,一个目录下有数千个文件时,stat的性能会逐渐变差,类似O(n2)的算法性能),因此在对遍历的时间性能要求较高的情况下,此算法不合适。
考虑到遍历时,如果对文件其他的属性并不关注,可以不使用stat系统调用,只判断是否是目录即可,因此算法可以调整为:
_dir = opendir( path );if( _dir ){ while(( _file = readdir( _dir )) != NULL ) { if( _file->d_type == DT_DIR ) { //is a folder travel_dir(...); } else { //is a file } }}此算法简单遍历所有目录,性能为O(n),与文件系统的文件数为线性关系。与上面的算法比,平均有几十倍的性能提升。
0 0
- 高效遍历文件系统
- kafka高效之一:文件系统
- 如何高效遍历Dataset
- Map的高效遍历
- dorado 高效遍历Dataset
- java HashMap 高效遍历
- 高效遍历HashMap
- java HashMap高效遍历
- 高效遍历Map
- 高效遍历Mat数组
- 高效遍历Map
- opencv之高效遍历图像
- 【学习OpenCV】高效遍历Mat
- 高效的图像遍历循环
- Scala中ListBuffer高效遍历
- Windows下文件系统的遍历
- C# 遍历文件系统,源代码分享
- FastDFS一个高效的分布式文件系统
- 海水淡化膜:世韩8040海水淡化膜的综合特性
- T-SQL查询进阶—理解SQL Server中的锁
- servlet细节
- Mac环境下svn命令行的使用
- MapReduce与自然语言处理
- 高效遍历文件系统
- 为什么 Android 手机总是越用越慢?
- Tomcat6 配置cgi openlayers跨域访问
- 无法定位程序输入点RegSetKeyValueA 于动态链接库 ADVAPI32.dll上 解决方案
- 用 SQL 语句还原数据库(with move 选项用法)
- 软件知识分类法
- jsp概述
- Core Graphics 学习笔记 之 Image Drawing(二)
- UESTC889&&uvalive6623 Battle for Silver(dfs)