Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-12

Carga lenta de cadenas al usar TZSQLProcessor

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Antonio Évora

Hola a todos,
Pues como digo en el asunto, he estado haciendo pruebas de carga de un TStrings y la diferencia entre cargar un TStringList y el Script del TZSQLProcessor (TStrings) tarda del orden de 750 veces mas :-(

El c�digo del formulario de pruebas es:

unit Unit1;
{$mode objfpc}{$H+}
interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
   TForm1 = class(TForm)
     Button1: TButton;
     Button2: TButton;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
   private
     { private declarations }
   public
     { public declarations }
   end;
var
   Form1: TForm1;
implementation
{$R *.lfm}
uses ZSqlProcessor, LCLIntf;
const
   LIMITE=1000;
procedure TForm1.Button1Click(Sender: TObject);
var
   BSQL: TZSQLProcessor;
   n: integer;
   Contador: DWord;
begin
   BSQL:=TZSQLProcessor.Create(nil);
   Contador:=GetTickCount();
   for n:=0 to Limite do
   begin
BSQL.Script.Add('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'+
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
   end;
   ShowMessage(inttostr(GetTickCount()-Contador)+' ms');
   BSQL.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
   BSQL: TStringList;
   n: integer;
   Contador: DWord;
begin
   BSQL:=TStringList.Create();
   Contador:=GetTickCount();
   for n:=0 to Limite do
   begin
BSQL.Add('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'+
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
   end;
   ShowMessage(inttostr(GetTickCount()-Contador)+' ms');
   BSQL.Free;
end;
end.

�?�?Alguna idea/soluci�n�?�?

Gracias de antemano.
Saludos.

Reply by email