Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Tiempo de ejecucion de un proceso

Hola,

Si bien este tema ya se trato varias veces, simplemente queria presentar una variante para calcular el tiempo de ejecucion de un proceso en una sola linea de codigo; a mi no me gusta el tener que agregar "las lineas magicas" al inicio y al final del proceso, y me gusta escribir poco codigo y tener algo reusable

Asi que cree una clase que con una sola funcion estatica ejecuta un proceso (TProc) una determinada cantidad de veces y luego retorna el tiempo de ejecucion total:

En este enlace esta el codigo fuente completo

Depende de otra unidad que tambien se encuentra en mi repo, un cronometro, que basicamente usa el viejo truco del "QueryPerformanceTime"


Ejemplo de uso:

Código Delphi [-]

uses
  RTL.Benchmark;

procedure TForm1.Button1Click(Sender: TObject);
const
  ITERATIONS = 5;
var
  Time: TBenchmarkTime: // tipo record con los milisegundos y segundos que demoro la ejecucion total
begin
  Time := TBenchmark.Benchmark(ITERATIONS,
  procedure
  begin
    { foo }
  end);

  // otra forma
  Time := TBenchmark.Benchmark(1, AlgunProceso);

  ShowMessageFmt('ms: %d - secs: %d', [Time.MSecs, Time.Secs]);
end;


De esta manera simplemente agrego un boton cualquiera en la aplicacion, envio como parametro el proceso que quiero ejecutar, y ya tengo el tiempo para informar; tambien puedo controlar la cantidad de veces que quiero que se ejecute

Saludos
Responder Con Cita
  #2  
Antiguo 26-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
Time := TBenchmark.Benchmark(ITERATIONS,   
  procedure   
  begin     
    { foo }   
  end);
¿Eso se puede hacer en alguna versión nueva de Delphi, o es un error?
Responder Con Cita
  #3  
Antiguo 26-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código Delphi [-]
Time := TBenchmark.Benchmark(ITERATIONS,   
  procedure   
  begin     
    { foo }   
  end);
¿Eso se puede hacer en alguna versión nueva de Delphi, o es un error?
Se puede, es la sintaxis para métodos anónimos. A partir de Delphi 2009
Responder Con Cita
  #4  
Antiguo 26-12-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Muy interesante. Gracias por compartirlo Agustín.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 26-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por AgustinOrtu Ver Mensaje
Se puede, es la sintaxis para métodos anónimos. A partir de Delphi 2009
Estupendo, gracias
Cita:
Empezado por dec Ver Mensaje
Hola,Muy interesante. Gracias por compartirlo Agustín.
Dec, ¿no te queda un poco grande el gorro?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Objeto para Medir el Tiempo de Ejecución de un Proceso nlsgarcia Trucos 1 22-02-2014 15:11:09
Tiempo de proceso excesivo elguille Varios 15 17-04-2013 12:34:04
Detectar proceso en ejecucion C++ dmartinezn C++ Builder 6 28-08-2012 23:07:16
Controlar la ejecución de un proceso satelier.martin Varios 3 14-04-2011 02:35:33
Parar ejecucion de un proceso trohan Varios 3 01-02-2008 18:05:18


La franja horaria es GMT +2. Ahora son las 01:07:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi