Order of magnitude (10 times greater) execution time resulting from order of computations in a script file that are otherwise identical.

조회 수: 1 (최근 30일)
I have two script files attached that are computationally identical except for the positioning of one equation in a nested set of for-loops. "DynamWave_Ponding_2D_V_Chan_Mod1.m" has the single equation at line 91 (commented as "fast position"). "DynamWave_Ponding_2D_V_Chan_Mod2.m" has the same equation moved to line 165 (commented as "slow position"). There is no difference logically or computationally in either position (that I can determine), but the ..Mod1.m executes 10 times faster than the ..Mod2.m . I would like to learn why it makes such a major difference in the execution times. Thanks.
  댓글 수: 5
the cyclist
the cyclist 2015년 9월 24일
I ran the code in 2015a, and both versions your code again run in comparable time. Interestingly, it was twice as fast in 2015a. :-(
Robert Eli
Robert Eli 2015년 9월 25일
I just finished running both versions of the code on a College Lab computer which also has R2015a installed. It is very similar to my personal PC (it is a Dell Optiplex 990 with the same operating system and memory). The result is the same: 7+ sec. for "Mod1", and 80+ sec. for "Mod2". So, this pretty much confirms that the College-wide installation of R2015a (by the same IT guys) has some sort of "bug", it appears. The IT guy is going to install R2015b on my PC Monday. I will report on the result afterwards. Thanks for all the help. The key was that no one outside this College sees any difference in execution time.

댓글을 달려면 로그인하십시오.

채택된 답변

Steven Lord
Steven Lord 2015년 9월 24일
Try profiling the two codes to ensure the lines are being executed the same number of times in the different locations and to ensure that the line whose position is different in the two codes is the main consumer of the additional time in the second case.
  댓글 수: 2
Cedric
Cedric 2015년 9월 24일
To profile, type
profile viewer
in the command window, type the name of the script in the field labeled "Run this code", and click on [Start profiling].
Robert Eli
Robert Eli 2015년 9월 25일
Cedric, I did as you instructed. Both versions of the program have the same number of calls to each statement in the program, but the amount of time spent on the single statement "H(w2,m,n)=.." increases by a factor of about 7 in the Mod2 version of the program. Several of the logic statements above this point are also impacted by a factor of 10 increase, but I cannot see any apparent connectivity of this behavior to the switch in location of the "H(w2,m,n)=.." statement. Again both programs have the identical number of calls to each statement. It is a bit frustrating.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Philip Borghesani
Philip Borghesani 2015년 9월 25일
This appears to be a bug/limitation in the 64 bit JIT in MATLAB versions prior to R2015b. Other versions of MATLAB don't show the performance difference between the two line locations.
It does look like R2015b lost some performance when running this code. Look to future versions to recover the performance back to your best case example.
Looking at this code my first thought is that some reorganization and vectorization might help improve the performance and make it more understandable, allowing further optimizations and people not familiar with it to offer useful suggestions on performance and vectorization improvements.
  댓글 수: 1
Robert Eli
Robert Eli 2015년 9월 25일
Philip, Thanks for finally solving this mystery. I have tried to be efficient with the coding, since speed is the biggest limitation in practical applications of this type of modeling code. I would appreciate any suggestions on where I might go to get some reorganization and vectorization guidance since execution speed will decide whether my work is of practical use or not. Thanks again for your help.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Introduction to Installation and Licensing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by