Additional
Overview
Features
Get
Discuss
News
Partners
Firebird Associate
 
High Performance PDF Print E-mail

Applications of all types will benefit from multiple FreeDAC high performance features, including Rowset Fetching, Array DML Command Execution, Command Batches, etc. Also, FreeDAC code is deeply optimized. Our software engineers spend considerable time making FreeDAC one of the fastest data access engines on the market.

 

Array DML Command Execution provides the possibility to insert, update, delete many records or call many times stored procedure by single Execute call. This minimizes network traffic and server workload, and is primarily useful in batch applications. For example, lets consider example, where we will insert 1000 of records into DB. Here is classic approach:

 

var
  i: Integer;
begin
  ADQuery1.SQL.Text := 'insert into MyTab values (:p1, :p2)';
  for i := 1 to 1000 do begin
    ADQuery1.Params[0].AsInteger := i;
    ADQuery1.Params[1].AsString := 'Str' + IntToStr(i);
    ADQuery1.ExecSQL;
  end;
end;
 

 

And that is the Array DML usage:

 

var
  i: Integer;
begin
  ADQuery1.SQL.Text := 'insert into MyTab values (:p1, :p2)';
  ADQuery1.Params.ArraySize := 1000;
  for i := 1 to 1000 do begin
    ADQuery1.Params[0].AsIntegers[i - 1] := i;
    ADQuery1.Params[1].AsStrings[i - 1] := 'Str' + IntToStr(i);
  end;
  ADQuery1.Execute(1000, 0);
end;

 

Depending on the DBMS, that will give few tens performance gain ! Although the coding is almost similar to the classic approach.

 

Rowset Fetching allows you to specify the number of records that will be fetched from the server in one network roundtrip. You can optimize this separately for each select statement that you execute, thereby minimizing the number of network roundtrips. For example, Zeos DBO does not support Rowset Fetching. Because that FreeDAC is few times faster than Zeos DBO on fetching.

 

FreeDAC code passed very deep optimization under AQ Time profiler. To prove the fact, that FreeDAC is one of the fastest data access engine on the market, we have created ADSpeed application - FreeDAC benchmark suite (see FreeDAC\Tool\Speed). For the tests one table is filled with 200 records, each has BLOB field of ~150Kb length. And another table - with 200,000 records, each has string, number and datetime fields.

 

Generate Data

 

There you see ADSpeed screen listing registered tests.

 

AnyDAC Benchmark Suite [Oracle mode]

 

There you see ADSpeed screen listing registered datasets of different vendors. As you can see, we have compared almost all good known Oracle data access components, presented on the market.

 

AnyDAC Benchmark Suite 

 

And there are test results (click the picture to enlarge it):

 

Benchmark results