根据规则将文件移动到另一个文件夹复杂度 O(n3) 优化

Moving files to another folder based on a rule Complexity O(n3) optimization

您好,我正在尝试根据规则移动 38 个文件夹中的 25000 张图像。每个文件夹代表图像所属的 class 个。我还有 38 个 .txt 文件,其中包含属于 class 的图像名称。该算法的复杂度为 O(n3) ,更确切地说是 O(25000*38*~3000)。仅仅移动 3000 张图像就花了我 12 个小时。移动所有图像大约需要 30 天。我可以做些什么来优化我的代码?

         parfor i=1:length(imNames) %imNames is a vector that contains the name of the 25000 images . 
            for k=1:38 %number of .txt files
                   nameOfFiles=filenames(k).name;
         %filenames stores the names of the 38 .txt files 
               nameOfFiles=erase(nameOfFiles,'.txt'); % removing .txt extension of files
               for j =1:length(data.(nameOfFiles)) % length of a particular .txt file(number of images within a file)
                  %data is a struct that has 38 fields/classes each field containing the names of images withing a .txt file
              if  strcmp(char(imNames(i)),data(j).(nameOfFiles)) 
 %Compares value of vector that contains 25000 values with value from file nameOfFiles
    copyfile(char(imNames(i)), nameOfFiles); % copies file to a folder nameOfFiles      
            end
           end
         end  

正如 nekomantic 所说,parfor 实际上减慢了我的程序。我的算法也可以减少到 O(n2)。我实际上并不需要外面的。我还在 C++ 中移动了我的算法,它的移动速度提高了 1000 倍。谢谢您的帮助 。

for k=1:38
nameOfFiles=filenames(k).name;
     nameOfFiles=erase(nameOfFiles,'.txt');
    for o=1:length(data.(nameOfFiles))

            copyfile(data(o).(nameOfFiles), nameOfFiles);
            disp(o)
         end
end