long execution time for simple lines like end and vector value addition
显示 更早的评论

I wanted to make my code more time efficient so looked in the profiler and saw that the most time consuming lines are 'end' and another quite simple line. it is a long loop but other lines in it runs much faster. Does anyone know why they take so long or have an idea how ti improve this loop?
Thanks!
1 个评论
Jan
2018-5-7
Under Matlab R2016b/Win10_64/i7 I get
sec calls
0.08 2399800 Efoot(n)=Efoot(n-1)+dt*(qin(n-1)+qm_foot-qsk(n-1));
0.08 2399800 Esk(n)=Esk(n-1)+dt*(qsk(n-1)+qm_sk-qout(n-1));
In your example the input data are 4 times bigger, but ths code needs 240 times longer. This is surprising. The main work is done in findpeaks.
Which Matlab version are you using?
采纳的回答
更多回答(2 个)
Jan
2018-5-1
0 个投票
A very important part of the code is missing: Is Efoot and Esk pre-allocated properly? Otherwise the arrays grow iteratively, which is very expensive.
Analysing the run time behavior of a code, which is shown as screenshot and partially only, is a very bold task. I cannot guess e.g., if "qin" is an array or a function. Please post the code as text, such that it can be used by copy&paste, and add some meaningful test data - either by attaching them as MAT file or by some rand() commands with relevant sizes.
Oded Scharf
2018-5-1
编辑:Oded Scharf
2018-5-7
3 个评论
Jan
2018-5-7
The run-time of the "end" is not meaningful. It might be an effect of tzhe JIT acceleration (although this is disables as far as I know during profiling?!). To find out more, e.g. if the code can be accelerated, ir would be required to run it, but the posted version does not run:
Undefined function or variable 'Qfoot'.
Error in asd (line 3)
[ Tsk_f, Tfoot_f,ssTsk,ssTfoot,skinrisetime, footrisetime,skp2p ] =...
A proper code formatting would be useful also: Mark the code and press the "{} Code" button.
Oded Scharf
2018-5-7
Jan
2018-5-7
类别
在 帮助中心 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!