AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TIBSQL vs isql-fb Shell

Ein Thema von stalkingwolf · begonnen am 29. Apr 2019 · letzter Beitrag vom 3. Mai 2019
 
stalkingwolf

Registriert seit: 6. Mai 2011
552 Beiträge
 
#10

AW: TIBSQL vs isql-fb Shell

  Alt 30. Apr 2019, 10:07
Hier der Quellcode. Beispiel mit TIBQuery nicht TIBSQL
Code:
procedure TForm1.bbexecClick(Sender: TObject);
var i,j        : integer;
    q          : TIBquery;
    command,
    line       : string;
    start,summe,
    t1,t2       : cardinal;

begin

    if input.lines.text = '' then exit;
   
    ibdb.DatabaseName := edDatabase.Text;
    ibdb.Connected   := TRUE;
    ibtrans.Active   := TRUE;

    bbexec.enabled   := FALSE;

    sb1.Panels[0].Text := ibdb.DatabaseName;
    caption := application.Title + ' - '+ibdb.DatabaseName;

    q:=tibquery.create(nil);
    q.UniDirectional:=FALSE;
    q.database     :=ibdb;

    output.lines.Clear;

    pb1.Position   := 1;
    pb1.Max        := input.lines.count;
    command        := '';
    summe          := 0;

    output.lines.add(format('%s - %s : Starte',[datetostr(date),timetostr(now)]));
    start := gettickcount;
    for i := 0 to input.lines.count -1 do begin

        pb1.Position:=i+1;

        command:=command+input.lines[i];

        if pos(';',input.lines[i]) = 0 then continue;

        try
            command:=stringreplace(command,#13#10,'',[rfReplaceAll]);
            command:=stringreplace(command,#13,'',[rfReplaceAll]);
            command:=stringreplace(command,#10,'',[rfReplaceAll]);


            q.sql.text := command;
            command    := '';
            t1          := GetTickCount;
            q.open;
            t2          := getTickcount;
            summe      := summe+(t2-t1);
            output.lines.add(format('EXEC Time : <%d>',[(t2-t1)]));

            if q.eof then begin
                output.lines.add('EOF : '+q.sql.text);
            end else begin

                while not q.eof do begin
                    line:='';
                    for j:=0 to q.FieldCount -1  do begin
                        if j = 0 then line:=q.FieldList[j].AsString
                        else line:=line+';'+q.FieldList[j].AsString;
                    end;
                    output.lines.add(line);
                    q.next;
                end;
            end;

        except
            on e:exception do begin
                output.lines.add(e.message);
            end;
        end;

        q.close;
    end;

    output.lines.add(format('%s - %s : Dauer Programm : %s sec ',[datetostr(date),timetostr(now),floattostr((gettickcount-start) / 1000)]));
    output.lines.add(format('%s - %s : Dauer Execute : %s sec ',[datetostr(date),timetostr(now),floattostr((summe) / 1000)]));

    if ibtrans.Active then ibtrans.CommitRetaining;


    output.lines.add(format('%s - %s : Ende ',[datetostr(date),timetostr(now)]));
    Application.ProcessMessages;

    q.free;
    bbexec.enabled:=TRUE;
    ibtrans.Active:=FALSE;
    ibdb.Connected:=FALSE;
end;
Bei dem durchführen auf dem gleichen Rechner (d.h Firebird unter Windows ). Ist der Unterschied 3(isql) zu 7(Delphi) Sekunden.

Letztendlich hat sich das ganze nun so gut wie geklärt. Ich habe nicht gedacht das die Interaktion mit der UI so extrem langsam ist. Ich habe dies nun auf einigen System (PC, VMWare Client, Hyper-V System ) getestet und es schwankt enorm.
Auf Hyper-V Systemen ist die Diskrepanz am größten.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz