Main Content

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. 
toc

Sometimes 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 pause function 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 timeit function.

  • Avoid clear all when measuring performance. For more information, see the clear function.

  • Assign your output to a variable instead of letting it default to ans.

See Also

| | |

Related Topics