AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# ADO.NET vs BDP.NET Performacetest?
Thema durchsuchen
Ansicht
Themen-Optionen

ADO.NET vs BDP.NET Performacetest?

Ein Thema von Christof · begonnen am 2. Mär 2005 · letzter Beitrag vom 7. Mär 2005
Antwort Antwort
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#1

ADO.NET vs BDP.NET Performacetest?

  Alt 2. Mär 2005, 16:53
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: ADO.NET BDP.NET
Hallo,

ich habe mal Performacemessungen zwischen den beiden Zugriffsarten und etwas erstaunliches festgestellt.

Datenmenge 15466 Datensätze mit einem SELECT DISTINCT von 1.143.396 Datensätze

Den selben SQL Befehl habe ich mit...
...ADO.NET mit dem DataReader und anschliessend füllen einer ComboBox mit den Einträgen
...BDP.NET mit DataAdapter und DataSet an eine ComboBox gebunden

Also der Vergleich zwischen einem DatenAdapter und einem direkten DatenReader.

ADO.NET BDP.NET Zeit in Sekunden!
MSSQL 1.718 2.109
Firebird 7.812 6.578

Beim MSSQL war wie ich es erwartet habe da der BDP ja nicht direkt darauf zugreift.

Aber beim Firebird warum ist der BDP Provider schneller als per ADO.NET ??????

Das würde ja dann für die Benutzung des BDP.NET Providers bei Firebird sprechen.
Das Ergebnis ist ja das selbe die ComboBox ist gefüllt und genau das will ich.
Kann ich mir nicht erklären, kann das jemand anderes ?


Gruß
Christof
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#2

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:35
Hat hier niemand ein Statement dazu ?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:42
Zitat von Christof:
Hat hier niemand ein Statement dazu ?
Was soll man dazu sagen?
Meine Meinung zum BDP kennst du sicher. Den würde ich noch nichtmal nehmen, wenn er 10-mal schneller wäre.
Beim FireBird Provider kann man aber etwas tricksen.
Ich habe zum Beispiel in einer statischen HashTable vorkompilierte FbCommands gehalten. Da Firebird keinen richtigen Client hat, wird ja der Query plan und die Berechtigungsprüfung nicht wiederverwendet.
Als Index der HashTable habe ich einfach den Typ der Klasse genommen. Das Statement aus dem "Pseudo cache" hat es ganz gut beschleunigt.
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#4

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:44
Zitat von Robert_G:
Zitat von Christof:
Hat hier niemand ein Statement dazu ?
Was soll man dazu sagen?
Meine Meinung zum BDP kennst du sicher. Den würde ich noch nichtmal nehmen, wenn er 10-mal schneller wäre.
Beim FireBird Provider kann man aber etwas tricksen.
Ich habe zum Beispiel in einer statischen HashTable vorkompilierte FbCommands gehalten. Da Firebird keinen richtigen Client hat, wird ja der Query plan und die Berechtigungsprüfung nicht wiederverwendet.
Als Index der HashTable habe ich einfach den Typ der Klasse genommen. Das Statement aus dem "Pseudo cache" hat es ganz gut beschleunigt.
Aha deshalb ist das so langsam, hast du dafür einen Beispielcode ?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:47
Du weißt doch sicher was eine HashTable ist.
Und was FbCommand.Prepare() macht solltest du auch wissen.
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#6

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:50
Zitat von Robert_G:
Du weißt doch sicher was eine HashTable ist.
Und was FbCommand.Prepare() macht solltest du auch wissen.
Klar.
Du speichert also die

Klasse | Ergebnis auf FbCommand.Prepare()

Habe ich das richtig verstanden ?


Gruß
Christof
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: ADO.NET vs BDP.NET Performacetest?

  Alt 7. Mär 2005, 13:53
Zitat von Christof:
Zitat von Robert_G:
Du weißt doch sicher was eine HashTable ist.
Und was FbCommand.Prepare() macht solltest du auch wissen.
Klar.
Du speichert also die

Klasse | Ergebnis auf FbCommand.Prepare()

Habe ich das richtig verstanden ?
Klasse| Command

Das Command wird im statischen Constructor vorkompiliert und kann dann in jeder Instanz verwendet werden. Dieser Ansatz ist praktisch, aber NICHT thread safe!
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz