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.
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.3.0.0.7798 | 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.3.0.0.7866 | 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 2.5.0.25784 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 3.0.0.7866 resulted in the identification and fixing of the error related to the queries pool. The error started to appear in IBProvider 3.0.0.7575. 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:
- _IBProvider_v1_vc9_i.dll, _IBProvider_v2_vc9_i.dll, (Visual Studio 2008 SP1+ compiler);
- _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.
- _IBProvider_i.dll, _IBProvider_v2_i.dll (Free Borland C++ compiler); Рregistered by the installer..