A really useful tool for code optimization in Matlab is the profiler. Using the profiler we can find the really computational intensive parts of our model and by trying to optimize them we can reduce heavily the computation time of the simulation. We can find the profiler on the desktop –> profiler (as seen below):
Once opened we can run any code we want through the profiler from the “Run this code:’” bar as seen below. I run a script of my own called prediction_script.
Once the code is ran we get a detailed report of how much time each function we use is called and how many times it is called throughout the simulation.
In the above picture we can see that the total time of the predictor script is
52.865 seconds. However only
0.031 seconds are used to run the code in the predictor script (this is the self time). so in my case the prediction script calls the predictor twice. and the predictor calls any other function.
The most computational intensive function in my case is the
get_value which is called
739180 times and lasts for
18.697 seconds. It does not call any other function (both the total and the self time are the same).
By clicking on the get_value we get the detailed information on where the most computations are done. By using the profiler often we get to know which operations are time consuming in Matlab and end up writing better code.
As we can get information on which functions call the selected function the profiler can also be used for reverse engineering in case of unknown code.
So if I get to make the get_value function faster or I manage to call it less times then the simulation will end up faster overall. Easy as pie. A really useful tool!