DOA Speed

dananiev

Member²
Marko, All

I did a simple test (C++ Builder):

start = TDateTime::CurrentDateTime();
DataSet->Open();
while( !DataSet->Eof)
{
for( int i =0; iFields->Count; i++)
switch( DataSet->Fields->Fields->DataType ){
ftString :
ftSmallint :
ftInteger :
ftWord ;
ftBoolean :
ftFloat :
ftCurrency:
ftBCD :
ftDate:
ftTime:
ftDateTime :
ftBytes :
ftAutoInc :
ftMemo :
ftFmtMemo :
ftFixedChar :
ftWideString :
ftLargeint :
ftVariant :
temp=DataSet->Fields->Fields[ i]->AsString; // test
}
DataSet->Next();
}
finish = TDateTime::CurrentDateTime();

The same query shows (in seconds)
BDE, Oracle Links 109 - 115
DOA 111 - 115
ADO (MS OLE DB for Oracle) 108 - 112

The speed seems to be the same, even ADO a little bit faster, although I thought that DOA should be fastest.

Any comments?
 
Any speed benchmark depends on a lot of variables.

If the network is a bottleneck and you are fetching many records, then setting TOracleDataSet.ReadBuffer to a higher value may help.

If client processing is the bottleneck, then using a TOracleQuery might help. This component has little overhead and is very well suited for batch operations.

If the actual query processing on the server (e.g. a large internal sort) is the bottleneck, then nothing will help. Except rewriting the query or adding some indexes of course.

------------------
Marco Kalter
Allround Automations
 
Back
Top