我怎样才能更快地保存代码? -MatLab
How can I make a saving code faster? -MatLab
我正在 运行 编写一个简短的代码来逐个打开文件列表并仅保存文件中包含的一个变量。在我看来,这个过程比我预期的要慢得多,而且随着时间的推移越来越慢,我不完全理解为什么以及如何让它 运行 更快。我总是在优化方面苦苦挣扎。如果您有任何建议,我将不胜感激。
代码如下(此处...替换为实际路径为例):
main_dir=dir(strcat('\storage2-...\Raw\DAQ5\'));
filename={};
for m=7:size(main_dir,1)
m
second_dir=dir([main_dir(m).folder '\' main_dir(m).name '\*.mat']);
for mm=1:numel(second_dir)
filename{end+1}=[second_dir(mm).folder '\' second_dir(mm).name];
for mmm=1:numel(filename)
namefile=sprintf(second_dir(mm,1).name);
load(string(filename(1,mmm)));
save(['\storage2-...\DAQ5\Ch1_',namefile(end-18:end-4),'.mat'], 'Ch_1_y')
end
end
end
原始文件大约 17 MB,保存单个变量后大约 6 MB。
Matlab load
函数采用可选的附加参数来指定仅从输入文件中读取的选定变量。
s = load('path/to/file.mat', 'Ch_1_y');
这样您就不必花时间从那些您将立即丢弃的输入 .mat
文件中加载所有其他变量。
并且使用 save
保存 MAT-files 超过 SMB 共享可能会很慢。您可能希望先调用 save
将其写入本地临时文件,然后将完成的文件复制到最终目的地。听起来更多 I/O,但它实际上可以是净赢,具体取决于您的特定系统和网络。以两种方式衡量它,看看它是否适合您的特定情况。
我正在 运行 编写一个简短的代码来逐个打开文件列表并仅保存文件中包含的一个变量。在我看来,这个过程比我预期的要慢得多,而且随着时间的推移越来越慢,我不完全理解为什么以及如何让它 运行 更快。我总是在优化方面苦苦挣扎。如果您有任何建议,我将不胜感激。
代码如下(此处...替换为实际路径为例):
main_dir=dir(strcat('\storage2-...\Raw\DAQ5\'));
filename={};
for m=7:size(main_dir,1)
m
second_dir=dir([main_dir(m).folder '\' main_dir(m).name '\*.mat']);
for mm=1:numel(second_dir)
filename{end+1}=[second_dir(mm).folder '\' second_dir(mm).name];
for mmm=1:numel(filename)
namefile=sprintf(second_dir(mm,1).name);
load(string(filename(1,mmm)));
save(['\storage2-...\DAQ5\Ch1_',namefile(end-18:end-4),'.mat'], 'Ch_1_y')
end
end
end
原始文件大约 17 MB,保存单个变量后大约 6 MB。
Matlab load
函数采用可选的附加参数来指定仅从输入文件中读取的选定变量。
s = load('path/to/file.mat', 'Ch_1_y');
这样您就不必花时间从那些您将立即丢弃的输入 .mat
文件中加载所有其他变量。
并且使用 save
保存 MAT-files 超过 SMB 共享可能会很慢。您可能希望先调用 save
将其写入本地临时文件,然后将完成的文件复制到最终目的地。听起来更多 I/O,但它实际上可以是净赢,具体取决于您的特定系统和网络。以两种方式衡量它,看看它是否适合您的特定情况。