Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 24-04-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Muchas gracias jhonny. Sí que queda claro, aunque

Cita:
Empezado por jhonny
nunca encuentro es ¿Por dónde comenzar?
para palurdos como yo comenzaría por una breve explicación de qué es eso de ejecutar tareas en paralelo y cuáles son las diferencias con el uso de threads.

Lo de las funciones anónimas y los métodos de clase lo dejaría sólo como referencia a otros artículos tuyos o de terceros.

LineComment Saludos
Responder Con Cita
  #22  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Muchas gracias jhonny. Sí que queda claro, aunque



para palurdos como yo comenzaría por una breve explicación de qué es eso de ejecutar tareas en paralelo y cuáles son las diferencias con el uso de threads.

Lo de las funciones anónimas y los métodos de clase lo dejaría sólo como referencia a otros artículos tuyos o de terceros.

LineComment Saludos
Bueno Roman, si tú eres un palurdo, no sé qué soy yo entonces jejeje

Me alegra que se haya entendido y gracias por la retroalimentación, es un norte que necesitaba.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #23  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola roman.

Olvidé incluirlos en las pruebas , tal vez por que recordaba que aunque mejoraba el tiempo, no lo hacía un rival de la concatenación.
Código:
Concatenando  :     203 µs.
Mensaje       :     261 µs.
Begin/Update  :  858024 µs.
Método Add    : 3320579 µs.
Saludos
Bueno, a mí el BeginUpdate/EndUpdate me ha arrojado los mismo números que me arroja el uso de TParallel. Que curioso todo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #24  
Antiguo 24-04-2017
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 jhonny Ver Mensaje
Bueno, a mí el BeginUpdate/EndUpdate me ha arrojado los mismo números que me arroja el uso de TParallel. Que curioso todo.
¿Tenéis un ordenador compartido?
Responder Con Cita
  #25  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Tenéis un ordenador compartido?
jejeje bueno, me refiero a que las pruebas que hice con el BeginUpdate/EndUpdate, me arrojaron el mismo resultado que me habían arrojado las pruebas que había hecho con TParallel en el ejercicio anterior... o sea, 295 milisegundo en promedio para 10000 como valor máximo.

Lo que me asombra es que a ecfisa se le haya demorado tanto usando BeginUpdate/EndUpdate.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #26  
Antiguo 24-04-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jhonny Ver Mensaje
Lo que me asombra es que a ecfisa se le haya demorado tanto usando BeginUpdate/EndUpdate.
A mi me asombran sus números. No sé cómo los obtuvo. Para 1000 números yo obtengo:

Código:
Concatenando: Alrededor de 3,000 microsegundos
BeginUpdate/EndUpdate: Alrededor de 72,000 microsegundos
Uso esto:

Código Delphi [-]
type
  ICounter = Interface
    function Ellapsed(): Single;
    function EllapsedAsString: String;
  end;

  TCounter = class(TInterfacedObject, ICounter)
  private
    Frequency, StartTicks: Int64;

  public
    constructor Create();
    function Ellapsed(): Single;
    function EllapsedAsString: String;
  end;

{ TCounter }

constructor TCounter.Create;
begin
  QueryPerformanceFrequency(Frequency);
  QueryPerformanceCounter(StartTicks);
end;

function TCounter.Ellapsed: Single;
var
  CurrentTicks: Int64;

begin
  QueryPerformanceCounter(CurrentTicks);
  Result := 1000000*(CurrentTicks - StartTicks);
  Result := Result/Frequency;
end;

function TCounter.EllapsedAsString: String;
begin
  Result := FormatFloat('0,000.0 µs', Ellapsed);
end;

Ejemplo:

Código Delphi [-]
var
  Counter: ICounter;

begin
  Counter := TCounter.Create();

  // Proceso a medir

  ShowMessage(Counter.EllapsedAsString);
end;

LineComment Saludos
Responder Con Cita
  #27  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
A mi me asombran sus números. No sé cómo los obtuvo. Para 1000 números yo obtengo:

Uso esto:

.
.
.
Yo uso este record: http://docwiki.embarcadero.com/Libra...ics.TStopwatch

Así:

Código Delphi [-]
var
  sw: TStopWatch;
begin
    sw := TStopWatch.Create;
    sw.Start;
      //Proceso a medir
    sw.Stop;
    
    Label1.Caption := sw.ElapsedMilliseconds.ToString; //Lugar donde muestro el resultado de la medición...
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 24-04-2017 a las 23:53:45.
Responder Con Cita
  #28  
Antiguo 24-04-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tus resultados son en milisegundos y los míos en microsegundos. En realidad, lo hice en microsegundos porque ecfisa así lo hizo, o al menos es lo que indica la unidad µs que puso. Quizá sean milisegunods pero aún así, es demasiado tiempo para el beginupdate/endupdate. Aunque, ciertamente, es más lento este último método.

LineComment Saludos
Responder Con Cita
  #29  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Tus resultados son en milisegundos y los míos en microsegundos. En realidad, lo hice en microsegundos porque ecfisa así lo hizo, o al menos es lo que indica la unidad µs que puso. Quizá sean milisegunods pero aún así, es demasiado tiempo para el beginupdate/endupdate. Aunque, ciertamente, es más lento este último método.

LineComment Saludos
Ciertamente, así es. El error mío no ha sido el tema de la conversión entre milisegundos y microsegundos, pues soy consciente que los resultados de ecfisa y los tuyos son en microsegundos... el error mío ha sido que he comparado los ejercicios incorrectos... debo comparar es el de String vs Begin/Update. Que ciertamente concatenar el String ha resultado mucho más rápido.

De todas maneras (Por si sirve de algo), para hacer el calculo con dicho record con todo el valor, se puede hacer así:

Código Delphi [-]
var
  sw: TStopWatch;
begin
    sw := TStopWatch.Create;
    sw.Start;
      //Proceso a medir
    sw.Stop;
    
    Label1.Caption := sw.Elapsed.ToString; //Que para el BeginUpdate/EndUpdate me devuelve 00:00:00.2985187 y concatenando 00:00:00.0021155
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 25-04-2017 a las 00:10:15.
Responder Con Cita
  #30  
Antiguo 25-04-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Pido disculpas, por que el tiempo transcurrido para la concatenación era de 2038 µs y no como erróneamente escribí 203 µs.
Luego al agregar el resultado de la prueba con BeginUpdate/EndUpdate, copié/pegué del mensaje #12 y reproduje el error en el mensaje #20.

Es decir que el único método que me arrojó valores por debajo de los 400 µs. fué el que se vale del uso de mensajes. Pero hay que aclarar que no es el tiempo total en completar la ejecución, ya que hay que sumarle lo que toma el S.O. para procesar la cola de mensajes para finalizar el mostrado ( se recibe el resultado cuando aún no terminó la impresión ).

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Copiar números impares de un listbox a otro ale4132 Varios 5 17-12-2012 20:33:10
Consulta Desde->Hasta Luis M. Firebird e Interbase 6 30-07-2008 20:40:34
1000 Mil M 0011 1110 1000 3e8 sakuragi La Taberna 29 05-03-2008 19:28:56
Poner puntos a los números mayores de 999 y hasta 1M Pedro-Juan Trucos 2 26-12-2007 20:13:08
Factorial hasta 1000 Cheswar Varios 29 21-09-2007 21:43:27


La franja horaria es GMT +2. Ahora son las 01:31:51.


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