我写了一个小的爬虫来扫描和求助目录结构.
它基于dirent(这是FindNextFileA的一个小包装)
在我的第一个基准测试中,这是令人惊讶的缓慢:
4500个文件大约123473ms(thinkpad t60p本地三星320 GB 2.5“HD).
在123473毫秒内找到121481个文件
这个速度正常吗?
这是我的代码:
int testPrintDir(std::string strDir,std::string strPattern="*",bool recurse=true){ struct dirent *ent; DIR *dir; dir = opendir (strDir.c_str()); int retVal = 0; if (dir != NULL) { while ((ent = readdir (dir)) != NULL) { if (strcmp(ent->d_name,".") !=0 && strcmp(ent->d_name,"..") !=0){ std::string strFullName = strDir +"\\"+std::string(ent->d_name); std::string strType = "N/A"; bool isDir = (ent->data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) !=0; strType = (isDir)?"DIR":"FILE"; if ((!isDir)){ //printf ("%s <%s>\n",strFullName.c_str(),strType.c_str());//ent->d_name); retVaL++; } if (isDir && recurse){ retVal += testPrintDir(strFullName,strPattern,recurse); } } } closedir (dir); return retVal; } else { /* Could not open directory */ perror ("DIR NOT FOUND!"); return -1; } }
解决方法
原文地址:https://www.jb51.cc/c/239714.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。