Recommended steps to deal with a slow loop
3 次查看(过去 30 天)
显示 更早的评论
Hi,
If a "for loop" is slow and each iteration is taking 2 hours what are the recommended steps that I should follow to deal with this issue?
0 个评论
回答(2 个)
Conrad
2012-7-27
I would recommend that you first focus on what happens inside the for loop... why is it taking so long? Get a complete breakdown of how much time is spend at every step, then you can decide where you can possibly optimise.
Further details would be great.
0 个评论
Sean de Wolski
2012-7-27
- Listen to mlint. If it is warning you about a variable changing size within a loop, that will slow it down immensely
- Remove every calculation from every loop that does not depend on the loop.
3 个评论
Sean de Wolski
2012-7-27
Use the profiler to identify the bottlenecks. Just run two or three files with profiler and it will show you where to focus your efforts. Some obvious things:
- try/catch is slow. I would try and write the code to avoid those.
- Skip the call to find here:
x0=find(ismember(s2(:,1),ID(k,1)));
- regexp can be slow, perhaps csvread or dlmread?
- Conversions to and from cell is slow (s2=num2cell(nan(size(V,1)-1,size(scol,2)));) avoid this if possible.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!