我需要合并大约5000万个小型Matlab矩阵。使用如下的脚本似乎永远不会完成。有更快的方法吗?如果速度更快,我愿意尝试非Matlab路线。
// bq_results.js component where the FILTER_RESULTS is accessed
render() {
console.log(this.props.filter_results); // only shows the first result
return (<div>...</div>)
}
function mapStateToProps(state) {
console.log(state.results.filter_results); // shows all selected cuts here
return {
filter_results: state.results.filter_results,
}
}
答案 0 :(得分:1)
这是一个完整的例子,显示&#34; parfor&#34;的使用。
disp('Using for-loop')
tmpData = zeros(100000,1);
tic
for i = 1:length(tmpData)
tmpData(i) = max(max(eig(i*ones(100,100)))); % Some operation
end
toc
disp('Using parfor-loop')
tic
parfor (i = 1:length(tmpData))
tmpData(i) = max(max(eig(i*ones(100,100)))); % Some operation
end
toc
上面的代码在我的机器上产生了以下时间。
Using for-loop
Elapsed time is 32.792182 seconds.
Using parfor-loop
Elapsed time is 7.673821 seconds.
但是,如果在for(或parfor)循环体内进行了一些简单的计算,那么&#34; for-loop&#34;运行速度超过&#34; parfor&#34;。例如,如果您将tmpData(i) = max(max(eig(i*ones(100,100))));
替换为tmpData(i) = i;
,那么您可以看到for循环执行得更好。