Publish date: 2009-11-16

Performance of the new IBProvider increased by 4.5 times

In the new IBProvider version, we removed the cause of low performance of IBProvider builds compiled in Visual Studio.

Now these builds work several times faster in both single-threaded and multi-threaded applications.

According to the test results,
new IBProvider Professional v3
works 4.5 faster than the former versions.

Now you can see for yourself that the new IBProvider version is much more effective than previous ones..

The figure presents the diagram of the builds testing in our test system:

* X-direction is test time in seconds.
  • Red graph — the old version IBProvider v3.0.0.7798.
  • Blue graph — the new version IBProvider v3.0.0.7866.

The table contains performance results in complex OLE DB test:

Old IBProvider version ver. No compiler File name in distributive Total test time, in seconds
IBProvider 32 bit v. BCB5 _IBProvider_v3_i.dll 118,7 sec.
IBProvider 32 bit VS2008 _IBProvider_v3_vc9_i.dll 439 sec.
IBProvider 64 bit VS2008 _IBProvider_v3_vc9_w64_i.dll 377,9 sec.
New IBProvider version
IBProvider 32 bit v. BCB5 _IBProvider_v3_i.dll 115,4 sec.
IBProvider 32 bit VS2008 _IBProvider_v3_vc9_i.dll 99 sec.
IBProvider 64 bit Leader VS2008 _IBProvider_v3_vc9_w64_i.dll 85 sec.

Test system description:

Database Server:Firebird SuperServer x64 (VS2008 SP1+). Local Protocol.
OS version:Windows Vista Ultimate x64 SP2+
Server:Q6600/4GB DDR3/ICH9R RAID10 x4 WD RE3 1TB
Test cases:Source codes are placed in «TestCode\ActiveX\IBP\oledb_test»
(Test mask is «cmd*»)

We fixed the error related to the queries pool

Load-testing of IBProvider resulted in the identification and fixing of the error related to the queries pool. The error started to appear in IBProvider We recommend the owners of this version to upgrade it.

Error description:

In some extremely neglected cases with server performance (Firebird 2.5 debug build was used), IBProvider used to hang up at obvious call of ADODB.Connection.Close.

New component LCPI.IBP.Samples.RowCursor — the faster substitute for ADODB.Recordset

IBProvider distribution kit now has the new component LCPI.IBP.Samples.RowCursor available both compiled and as source codes. This is a simplified counterpart of ADODB.Recordset component. However, it provides faster access to data due to the following features:

  • Instead of EOF/MoveNext, the component provides the unified Fetch method.
  • At each reference to Field.Value, ADODB.Recordset makes a query to OLE DB provider and doesn’t cache the obtained data, and RowCursor is able to download data from all entry fields and uses caching.
  • IDispatch::Invoke call has been optimized for basic methods. This makes script programs work faster.
  • IOpenRowset interface is used, which allows to perform SQL-queries via session object without creation of a command. This feature is supported only in IBProvider v3.

Peculiarities of the component operation:

  • ADODB-compatible, uses ADODB.Connection to connect to the database.
  • Supports all data types including BLOB, arrays, and binary types.
  • By now, only unidirectional data access has been implemented.

Comparative tests on VBScript (IDispatch interface is used) have shown that LCPI.IBP.Samples.RowCursor works up to 30% faster with some operations than ADODB.Recordset..

Source code of the component

The source code of LCPI.IBP.Samples.RowCursor is available in IBProvider distribution kit: (Samples\oledb\sample_com_object)

Examples of the component usage

The examples of the component usage can be found in IBProvider test system, which is included into the distribution kit :

  • TestCode\ActiveX\IBP\test_system\tests\test.ibps.row_cursor.01.vbs
  • TestCode\ActiveX\IBP\test_system\tests\test.ibps.row_cursor.02.vbs
  • TestCode\ActiveX\IBP\test_system\tests\test.ibps.row_cursor.03.vbs
  • TestCode\ActiveX\IBP\test_system\prog\prog_perf__02_row_cursor.wsf
  • TestCode\ActiveX\IBP\test_system\prog\prog_perf__03.wsf

Changes in the distribution kit

Now IBProvider Professional distribution kit includes 2 new optimized dlls:

  • _IBProvider_v1_vc9_i.dll (IBProvider v1);
  • _IBProvider_v2_vc9_i.dll (IBProvider v2);

Instead of Free Borland C++ compiler, they are compiled with the new up-to-date compiler from Visual Studio 2008 SP1+. They substituted the following files:

  • _IBProvider.dll;
  • _IBProvider_v2.dll;

The new installer includes only optimized builds of IBProvider v1 and IBProvider v2:

  1. _IBProvider_v1_vc9_i.dll, _IBProvider_v2_vc9_i.dll, (Visual Studio 2008 SP1+ compiler);
  2. _IBProvider_v1_vc9_w64_i.dll и _IBProvider_v2_vc9_w64_i.dll (Visual Studio 2008 SP1+ compiler); registered during installation on a 64-bit platform.
  3. _IBProvider_i.dll, _IBProvider_v2_i.dll (Free Borland C++ compiler); Рregistered by the installer..

Publish date: 2009-11-16. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link required.