AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Kleiner Geschwindigkeitstest von Insert

Kleiner Geschwindigkeitstest von Insert

Ein Thema von Monday · begonnen am 18. Dez 2016 · letzter Beitrag vom 18. Dez 2016
 
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#1

Kleiner Geschwindigkeitstest von Insert

  Alt 18. Dez 2016, 09:31
Datenbank: SQLITE • Version: 3 • Zugriff über: Zeos
Hallo,

mich hat es interessiert, wie sich die Geschwindigkeiten von

Inserts bei SQLite3 und Zeos

verändern, mit unterschiedlichen "schreibweisen"; Und habe festgestellt, dass es durchaus erhebliche Unterschiede geben kann.

Ich habe den Test mehrmals durchlaufen, auch mit unterschiedlichen Zahlen und habe folgende Durchschnittszeiten bekommen:



Hier die sortierte Ergebnisse:
Code:
Benötigte Zeit %      Funktionsname
1,20 %                Test4 (Insert; in Transaction, außerhalb der Funktion)
1,21 %                Test3 (Insert; in Transaction innerhalb der Funktion)
97,58 %               TEst1 (Insert und exec... direkt hintereinander)



(Funktion 2 hat im Test nicht teilgenommen. Ich war der Annahme, es ist auch mögliche mehrere Inserts mit add zu schreiben, doch das ist so nicht möglich.)


Hier die verschiedene Abschnitte:


Derzeit aktuelle Tabelle im Beitrag:
http://www.delphipraxis.net/1356490-post5.html



Delphi-Quellcode:
function test1(testzahl:integer): string;
var
  a: integer;
begin
  for a := 1 to testzahl do begin
    Form1.ZQuery1.SQL.Text := 'Insert into daten2 (zahl) values (:zahl)';
    Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
    Form1.ZQuery1.ExecSQL;
  end;
end;



function test2(testzahl:integer): string;
var
  a: integer;
begin
  Form1.ZQuery1.SQL.Clear;
  for a := 1 to testzahl do begin
    Form1.ZQuery1.SQL.add('Insert into daten2 (zahl) values (:zahl);');
    Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
  end;
   Form1.ZQuery1.ExecSQL;
end;



function test3(testzahl:integer): string;
var
  a: integer;
begin
  Form1.ZQuery1.SQL.text := 'begin transaction;';
  Form1.ZQuery1.ExecSQL;

    Form1.ZQuery1.SQL.Text := '';
  for a := 1 to testzahl do begin
    Form1.ZQuery1.SQL.text := 'Insert into daten2 (zahl) values (:zahl);';
    Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
      Form1.ZQuery1.ExecSQL;
  end;

  Form1.ZQuery1.SQL.text := 'Commit;';
  Form1.ZQuery1.ExecSQL;
end;




function test4(testzahl:integer): string;
var
  a: integer;
begin
    Form1.ZQuery1.SQL.Text := '';
  for a := 1 to testzahl do begin
    Form1.ZQuery1.SQL.text := 'Insert into daten2 (zahl) values (:zahl);';
    Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
      Form1.ZQuery1.ExecSQL;
  end;
end;


//START der Funktionen:
  Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
  test1(testzahl);

  Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
  test3(testzahl);

  Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
  Form1.ZQuery1.SQL.text := 'begin transaction;'; Form1.ZQuery1.ExecSQL;
  test4(testzahl);
  Form1.ZQuery1.SQL.text := 'Commit;'; Form1.ZQuery1.ExecSQL;



LG
Monda<

Geändert von Monday (18. Dez 2016 um 16:38 Uhr)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:59 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 by Thomas Breitkreuz