我写了一个小的爬虫来扫描和求助目录结构.
它基于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; } }