Publi

Cronometrar código (matlab)

Matlab® es un lenguaje muy utilizado en ingeniería, ya que permite hacer de forma más o menos sencilla cálculos matemáticos muy complejos, y a veces necesitamos procesar gran cantidad de datos y llega a ser desesperante ver cómo tarda sin tener tan siquiera una ligera idea de cuánto queda.

El principio del código que voy a postear se basa en dos funciones: tic y toc. La primera de ellas marca el inicio de la cuenta de tiempo, y la segunda el final, indicándonos los segundos transcurridos entre tic y toc. Podemos por ejemplo hacer esto:

1
2
3
tic
% Tarea que tarda mucho
toc

Y nos devolverá los segundos en total que ha tardado.

Pero vamos a ir algo más allá. Imaginemos que tenemos una tarea iterativa de N iteraciones, queremos que cada N/20 iteraciones nos diga más o menos lo que queda (en cada iteración sería mucho, porque estaría todo el rato diciendo el tiempo, y además gastando tiempo en ello; por lo que tendríamos que esperar mucho más de lo necesario).

Éste es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
N=2000;

aviso=100;

tic % Inicia el contador de tiempo
for n=0:N

    % Calculamos el progreso total y los tiempos estimado y restante
    if (mod(n, aviso)==0)
        progreso=n/N;       % Progreso (Entre 0 y 1)
        transcurrido=toc;   % Tiempo transcurrido
        estimado=transcurrido/progreso; % Estimamos el tiempo total
        queda = estimado-transcurrido;  % Tiempo restante
        % Lo mostramos todo en pantalla
        disp(sprintf('Progreso %2.2f%%. Tiempo Transcurrido: %ds. Tiempo estimado: %ds. Tiempo restante %ds.', progreso*100, round(transcurrido), round(estimado), round(queda)));    
    end
   
    % Esto se supone que es una tarea que tarda mucho tiempo
    pause(0.01);
end

disp('Completado!');

También podría interesarte....

There are 6 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. miguek /
    Usando Google Chrome Google Chrome 56.0.2924.87 en Windows Windows 8

    GENIAL! muchísimas gracias, justo lo que necesitaba
    crack

    1. Gaspar Fernández /
      Usando Mozilla Firefox Mozilla Firefox 52.0 en Ubuntu Linux Ubuntu Linux

      Gracias a ti miguek, por pasarte por aquí 🙂

  3. Mike Rooney /
    Usando Google Chrome Google Chrome 109.0.0.0 en Windows Windows NT

    This is a great inspiring article. I am pretty much pleased with your good work.You put really very helpful information. Your Place or Mine Ashton Kutcher Jacket

  4. OKBet /
    Usando Google Chrome Google Chrome 114.0.0.0 en Windows Windows NT

    Quality posts is the crucial to invite the visitors to visit the web page, that’s what this web page is providing.
    NBA Betting

  5. Belinda /
    Usando Google Chrome Google Chrome 116.0.0.0 en Windows Windows NT

    Retro bowl is a throwback-style football game in which the objective is to coach your team to victory and earn a prize at the end of each season.

Leave a Reply