Hallo zusammen,
da ich mich von der BDE trennen möchte, habe ich erste Versuche mit ADO gemacht. Und feststellen müssen, daß ADO VIIIIIEEEEEL langsamer als die BDE ist.
Umgebung: informix 7 Datenbank (über informix ODBC-Treiber), BCB 6 Enterprise, Windows XP Pro
Ich habe einfach eine ADOConnection und ein ADODataset auf die Form gelegt (alle Einstellungen Standardwerte, hab' nur versucht das ADODataset auf clUseServer zu setzen, was aber eine Fehlermeldung gegeben hat).
Zum Vergleich habe ich auch die BDE noch mal bemüht. Eine TDatabase und ein TQuery.
Zum Testen habe ich dann einfach mal den Artikelstamm geöffnet und durch alle Artikel iteriert. Das Ergebnis ist entäuschend (alle Angaben in Millisekunden):<BR>
BDE-Test<BR>
Vorbereiten: 0<BR>
Öffnen: 10<BR>
Lauf: 3284<BR>
Schließen: 361<BR>
Anzahl: 28737<BR>
ADO-Test<BR>
Öffnen: 4206<BR>
Lauf: 18416<BR>
Schließen: 10<BR>
Anzahl: 28737<BR>
Die Testroutinen:
<PRE>
//ADO:
adsartikel->Open();
if (adsartikel->FindFirst())
{
do
{
count++;
} while (adsartikel->FindNext());
}
adsartikel->Close();
</PRE>
<PRE>
//BDE:
qartikel->Prepare();
qartikel->Open();
if (qartikel->FindFirst())
{
do
{
count++;
} while (qartikel->FindNext());
}
if (qartikel->Active)
qartikel->Close();
if (qartikel->Prepared)
qartikel->UnPrepare();
</PRE>
Weitherhin hat die ADO-Routine am Ende eine Fehlermeldung ausgegeben: Entweder EOF oder BOF ist true (kann umgangen werden indem auf while (!adsartikel->Eof); geprüft wird).
Die Verbindungen wurden vorher bereits 'geopened'.
Mach' ich da irgendwas falsch, oder ist das einfach so? Gibt es Alternativen zu ADO?
Grüße
Jochen
da ich mich von der BDE trennen möchte, habe ich erste Versuche mit ADO gemacht. Und feststellen müssen, daß ADO VIIIIIEEEEEL langsamer als die BDE ist.
Umgebung: informix 7 Datenbank (über informix ODBC-Treiber), BCB 6 Enterprise, Windows XP Pro
Ich habe einfach eine ADOConnection und ein ADODataset auf die Form gelegt (alle Einstellungen Standardwerte, hab' nur versucht das ADODataset auf clUseServer zu setzen, was aber eine Fehlermeldung gegeben hat).
Zum Vergleich habe ich auch die BDE noch mal bemüht. Eine TDatabase und ein TQuery.
Zum Testen habe ich dann einfach mal den Artikelstamm geöffnet und durch alle Artikel iteriert. Das Ergebnis ist entäuschend (alle Angaben in Millisekunden):<BR>
BDE-Test<BR>
Vorbereiten: 0<BR>
Öffnen: 10<BR>
Lauf: 3284<BR>
Schließen: 361<BR>
Anzahl: 28737<BR>
ADO-Test<BR>
Öffnen: 4206<BR>
Lauf: 18416<BR>
Schließen: 10<BR>
Anzahl: 28737<BR>
Die Testroutinen:
<PRE>
//ADO:
adsartikel->Open();
if (adsartikel->FindFirst())
{
do
{
count++;
} while (adsartikel->FindNext());
}
adsartikel->Close();
</PRE>
<PRE>
//BDE:
qartikel->Prepare();
qartikel->Open();
if (qartikel->FindFirst())
{
do
{
count++;
} while (qartikel->FindNext());
}
if (qartikel->Active)
qartikel->Close();
if (qartikel->Prepared)
qartikel->UnPrepare();
</PRE>
Weitherhin hat die ADO-Routine am Ende eine Fehlermeldung ausgegeben: Entweder EOF oder BOF ist true (kann umgangen werden indem auf while (!adsartikel->Eof); geprüft wird).
Die Verbindungen wurden vorher bereits 'geopened'.
Mach' ich da irgendwas falsch, oder ist das einfach so? Gibt es Alternativen zu ADO?
Grüße
Jochen
Comment