Documentation

This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

timeit

Measure time required to run function

Syntax

``t = timeit(f)``
``t = timeit(f,numOutputs)``

Description

example

````t = timeit(f)` measures the typical time (in seconds) required to run the function specified by the function handle `f`.```

example

````t = timeit(f,numOutputs)` calls `f` with the desired number of outputs, `numOutputs`. By default, `timeit` calls the function `f` with one output (or no outputs, if the function does not return any outputs).```

Examples

collapse all

Use `timeit` to time a function call to `date`. This example uses a handle to a function that accepts no input.

```f = @date; t = timeit(f)```
```t = 1.1792e-04 ```

Time the combination of several mathematical matrix operations: matrix transposition, element-by-element multiplication, and summation of columns.

```A = rand(12000,400); B = rand(400,12000); f = @() sum(A.'.*B, 1); timeit(f)```
```ans = 0.0718 ```

Determine how long it takes to run `svd` with one output argument, `s = svd(X)`.

```X = rand(100); f = @() svd(X); t1 = timeit(f)```
```t1 = 0.0108 ```

Compare the results to `svd` with three output arguments, `[U,S,V] = svd(X)`.

`t2 = timeit(f,3)`
```t2 = 0.0167 ```

Create a short function to allocate a matrix using nested loops. Preallocating an array using a nested loop is inefficient, but is shown here for illustrative purposes.

```function mArr = preAllocFcn(x,y) for m = 1:x for n = 1:y mArr(m,n) = 0; end end end ```

Compare the time to allocate zeros to a matrix using nested loops and using the `zeros` function.

```x = 1000; y = 500; g = @() preAllocFcn(x,y); h = @() zeros(x,y); diffRunTime = timeit(g)-timeit(h) ```
```diffRunTime = 0.1584 ```

Input Arguments

collapse all

Function to be measured, specified as a function handle. `f` is either a handle to a function that takes no input, or a handle to an anonymous function with an empty argument list.

Number of desired outputs from `f`, specified as an integer. If the function specified by `f` has a variable number of outputs, `numOutputs` specifies which syntax `timeit` uses to call the function. For example, the `svd` function returns a single output, `s`, or three outputs, `[U,S,V]`. Set `numOutputs` to `1` to time the `s = svd(X)` syntax, or set it to `3` to time the `[U,S,V] = svd(X)` syntax.

Tips

• The following actions result in unexpected output:

• Using `timeit` between `tic` and `toc`
• Using `timeit` to time a function that includes calls to `tic` and `toc`
• Using `timeit` recursively

Algorithms

`timeit` calls the specified function multiple times, and computes the median of the measurements.