Measure the Performance of Your Code
Overview of Performance Timing Functions
The timeit function and the stopwatch
timer functions, tic and toc, enable you to time how long
your code takes to run. Use the timeit function
for a rigorous measurement of function execution time. Use tic and toc to
estimate time for smaller portions of code that are not complete functions.
For additional details about the performance of your code, such as function call information and execution time of individual lines of code, use the MATLAB® Profiler. For more information, see Profile Your Code to Improve Performance.
Time Functions
To measure the time required to run a function, use the timeit function. The timeit function calls the
specified function multiple times, and returns the median of the measurements. It
takes a handle to the function to be measured and returns the typical execution
time, in seconds. Suppose that you have defined a function,
computeFunction, that takes two inputs, x
and y, that are defined in your workspace. You can compute the
time to execute the function using timeit.
f = @() myComputeFunction(x,y); % handle to function
timeit(f)Time Portions of Code
To estimate how long a portion of your program takes to run or to compare the
speed of different implementations of portions of your program, use the stopwatch
timer functions, tic and toc. Invoking
tic starts the timer, and the next toc
reads the elapsed time.
tic
% The program section to time.
tocSometimes programs run too fast for tic and toc to provide useful data. If your
code is faster than 1/10 second, consider measuring it running in a loop, and then
average to find the time for a single run.
The cputime Function vs. tic/toc and timeit
It is recommended that you use timeit or
tic and toc to measure the performance
of your code. These functions return wall-clock time. Unlike
tic and toc,
the timeit function calls your code multiple
times, and, therefore, considers first-time costs.
The cputime function measures the total CPU time and
sums across all threads. This measurement is different from the wall-clock time
that timeit or
tic/toc return, and could be
misleading. For example:
The CPU time for the
pausefunction is typically small, but the wall-clock time accounts for the actual time that MATLAB execution is paused. Therefore, the wall-clock time might be longer.If your function uses four processing cores equally, the CPU time could be approximately four times higher than the wall-clock time.
Tips for Measuring Performance
Consider the following tips when you are measuring the performance of your code:
Time a significant enough portion of code. Ideally, the code you are timing should take more than 1/10 second to run.
Put the code you are trying to time into a function instead of timing it at the command line or inside a script.
Unless you are trying to measure first-time cost, run your code multiple times. Use the
timeitfunction.Avoid
clear allwhen measuring performance. For more information, see theclearfunction.Assign your output to a variable instead of letting it default to
ans.