Additional
AnyDAC for Delphi Oracle driver optimization
Posted by Support [May 19, 2010]
The software optimization is really an endless and competitive process. Sometimes one may think, that there is already a speed limit reached. No, it is not and practically never will.

AnyDAC for Delphi is comparably complex software library with about 200K lines of code. And there are always exist some code places, which may be optimized. And, what is important, the author is aware of them :) So, from release to release I am raising the product speed ...

 

BTW, speed or velocity ? Velocity is about vector values. Speed is an object property to move fast. At data access I can easealy imaging the vectors. Many vectors, constituting the logical data flows. So, velocity also looks like a correct term.

 

So, we just raised the AnyDAC for Delphi Oracle driver speed for 30%. This fact is valid for the SELECT's:

  • queries returning <= 10 records;
  • queries having efficient execution plans;
  • slow networks.

 

And I was aware of this place may be already 10 years. Just as always - no time to check. And yesterday one of the AnyDAC customers has reported speed issue with Oracle 11.2. The analysis showed, that Oracle Server has a bug exactly in this very old non-touched area. So, after the rewriting of this place I got this performance raise.

 

And here is the current AnyDAC for Delphi Oracle driver benchmark result:

 

AnyDAC Oracle driver benchmark results

 

The DataSets Legend. For comparision I have used only Embarcadero BDE, dbGo (ADO) and dbExpress datasets, as the AnyDAC TADQuery with dbExpress bridge driver:

 

AnyDAC Oracle driver datasets

 

The Tests Legend. The result set with BLOBs is 1k of records with ~150K BLOB's. The result set without BLOBs is 200k of records with "Order"-like layout:

 

AnyDAC Oracle driver benchmark tests

 

Few things I want to conclude:

  1. BDE to be outdated, is not the slowest. See "FetchAll (No BLOBs)" test.
  2. dbExpress, even to be very light-weighted and unidirectional, is not the fastest data access method to the record sets.
  3. dbGo (ADO) is very slow. Actually, not the ADO itself is slow, by the Delphi data access components around ADO are slow.
  4. Array DML is just amaizingly fast !

 

Also, internally we have benchmark results with AllroundAutomations DOA and DevArt ODAC data access libraries. And there AnyDAC for Delphi also looks amazingly. But feel free to compare these and other libraries on your own. As only your own application is a True Benchmark !


LIST OF COMMENTS


1/4. Average speed is not impressive
Posted by burdi - May 20, 2010
Website
Data flow has two directions - one from server to client and one from client to server. So with AnyDAC we have high speed data access with average velocity zero - vector AB + vector BA = vector with no direction and no size :)

2/4. You mean the volicity ?
Posted by Support - May 20, 2010
Website
As we have the great speed with the zero velocity :)

3/4. Yes I mean velocity!
Posted by burdi - May 20, 2010
Website
My speed of writing was to high. At the end of subject I would have to return and replace speed with velocity - my velocity of writing would have to be smaller :)

4/4. More synonyms
Posted by Support - May 20, 2010
Website

Well ... Checked and found few more synonyms, so the total list is:

  • speed
  • velocity
  • rapidity
  • quickness
  • swiftness

Add Comments