提问者:小点点

我想并行化下面的代码来加快速度[已关闭]


我想并行化下面的代码来加快速度,这是如何做到的?

代码:

    void GetFile(string& foldername, vector<string>& output) {
    DIR* dir;
    struct dirent* DirEntry;

    if ((dir = opendir(foldername.c_str())) != NULL)
    {
        while ((DirEntry = readdir(dir)) != NULL)
        {
            if (strcmp(DirEntry->d_name, ".") && strcmp(DirEntry->d_name, ".."))
            {
                string subfolder(foldername);
                subfolder += "\\";
                subfolder += DirEntry->d_name;
                DIR* subdir;
                if ((subdir = opendir(subfolder.c_str())) != NULL)
                {
                    l(subfolder, output);
                    closedir(subdir);
                }
                else
                {
                    string fullname(foldername);
                    fullname = fullname + '\\' + DirEntry->d_name;
                    output.push_back(fullname);
                }
            }
        }
        closedir(dir);
    }
    else
    {
    }
}

请帮帮我。我需要学习什么才能做到这一点?


共1个答案

匿名用户

你不太可能通过并行化来加快它的速度。代码受到磁盘驱动器速度的限制。

如果您的根文件夹有多个子文件夹,您可以尝试为每个这样的文件夹生成一个线程--只是为了确认它不会变得更快。

我想补充的是,现代驱动器能够对多个请求进行排队,并优化处理这些请求的顺序,因此您不是完全不可能看到性能的提高。