Main Content

Medir el rendimiento del código

Visión general de las funciones de temporización del rendimiento

La función timeit y las funciones de cronómetro temporizador, tic y toc, le permiten cronometrar cuánto tarda el código en ejecutarse. Utilice la función timeit para realizar una medición rigurosa del tiempo de ejecución de la función. Utilice tic y toc para estimar el tiempo de pequeñas partes del código que no son funciones completas.

Para obtener más información sobre el rendimiento del código, como información sobre las llamadas a las funciones y el tiempo de ejecución de líneas individuales de código, utilice el generador de perfiles de MATLAB®. Para obtener más información, consulte Perfile el código para mejorar su rendimiento.

Funciones de tiempo

Para medir el tiempo necesario para ejecutar una función, utilice la función timeit. La función timeit llama a la función especificada varias veces y devuelve la mediana de las mediciones. Toma un identificador de la función que se ha de medir y devuelve el tiempo de ejecución habitual en segundos. Suponga que ha definido una función, computeFunction, que toma dos entradas, x e y, definidas en su área de trabajo. Puede calcular el tiempo que tarda en ejecutarse la función con timeit.

f = @() myComputeFunction(x,y); % handle to function
timeit(f)

Partes temporales del código

Para estimar cuánto tarda una parte del programa en ejecutarse o comparar la velocidad de diferentes implementaciones de partes del programa, utilice las funciones de cronómetro temporizador, tic y toc. Al invocar tic, se inicia el temporizador y el siguiente toc lee el tiempo transcurrido.

tic
   % The program section to time. 
toc

En ocasiones, el programa se ejecuta demasiado rápido para que tic y toc proporcionen datos útiles. Si el código es más rápido que 1/10 segundo, plantéese medirlo ejecutando un bucle y, después, realice la media para obtener el tiempo de una sola ejecución.

La función cputime en comparación con tic/toc y timeit

Se recomienda que utilice timeit o tic y toc para medir el rendimiento del código. Estas funciones devuelven el tiempo de reloj. A diferencia de tic y toc, la función timeit llama a su código varias veces y, por tanto, tiene en consideración los costes de la primera ejecución.

La función cputime mide el tiempo total de la CPU y suma todos los procesos. Esta medición es diferente del tiempo de reloj que devuelven timeit o tic/toc y podría ser errónea. Por ejemplo:

  • El tiempo de la CPU para la función pause habitualmente es poco, pero el tiempo de reloj incluye el tiempo real durante el que la ejecución de MATLAB está pausada. Por tanto, el tiempo de reloj puede ser mayor.

  • Si la función utiliza cuatro núcleos de procesamiento de forma equitativa, el tiempo de la CPU podría ser aproximadamente cuatro veces mayor que el tiempo de reloj.

Consejos para medir el rendimiento

Tenga en cuenta los siguientes consejos al medir el rendimiento del código:

  • Cronometre una parte suficientemente significativa del código. En teoría, el código que está cronometrando debe tardar más de 1/10 segundo en ejecutarse.

  • Ponga el código que está intentando cronometrar en una función en lugar de cronometrarlo en la línea de comandos o dentro de un script.

  • A menos que esté intentando medir el coste de la primera ejecución, ejecute el código varias veces. Utilice la función timeit.

  • Evite clear all al cronometrar el rendimiento. Para obtener más información, consulte la función clear.

  • Asigne la salida a una variable en lugar de dejarla de forma predeterminada en ans.

Consulte también

| | |

Temas relacionados