Cita:
Empezado por jhonny
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;
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();
ShowMessage(Counter.EllapsedAsString);
end;
LineComment Saludos