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
  #1  
Antiguo 24-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 roman.
Cita:
Empezado por roman Ver Mensaje
Bueno, pero antes de agregar líneas por PostMessage o concatenar y pegar, ¿han intentado un BeginUpdate - EndUpdate?

LineComment Saludos
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
__________________
Daniel Didriksen

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


La franja horaria es GMT +2. Ahora son las 10:51:50.


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