Smithware Home PageSmithware Product InformationHow to Order Smithware ProductsSmithware Technical SupportSearch the Smithware Web SiteBtrieve Developer's Journal MagazineContact Smithware by E-mailPervasive Software Home Page Smithware Home Page

Smithware ActiveX Controls for Btrieve Benchmark Information

Back to Activex Controls for Btrieve.



The following benchmark information was derived from an adaptation of the Visual Basic database benchmark model developed by Steve Jackson for his article "Clocking Data Access," which ran in the May 1996 issue of Visual Basic Programmer's Journal (Vol. 6, No. 6).


Our Test Platform

  • Workstation: Dell Optiplex 4100/L, 486 100Mhz, 16Mb
  • Programming Language: Microsoft Visual Basic 4.0
  • Operating System: Microsoft Windows 95
  • Network: SMC Ethernet (ThinNet)
  • Network Server: Generic PC, 486 100Mhz, 32Mb
  • Network OS: Novell NetWare 4.1
  • Database: Btrieve 6.15 for NetWare - Server Edition

The Database

The database used for these tests was also adapted from Jackson's model. It consisted of the following files:

Table: Customer
Records: 100,000
Primary Key: CustID
Fields: CustID String 10
LastName String 20
FirstName String 20
State String 2
LastOrderDate String 10
TimesOrderPlaced Long 4

Table: OrderEntry
Records: 5,000
Primary Key: OrderID
Foreign Key: CustID
Fields: OrderID String 10
CustID String 10
OrderDate String 10
ShipDate String 10
OrderYear String 2
OrderMonth String 2

Table: Product
Records: 1,000
Primary Key: ProductID
Fields: ProductID String 10
ProductName String 40
ProductCode String 10
QtyOnHand Long 4

Table: ProductCode
Records: 200
Primary Key: ProductCode
Fields: ProductCode String 10
ProductDescription String 30

Test Methodology

The tests used different data access methods to produce the same result, timing operations typically performed on a database by an application.

Select row by index 20 times returned 20 records out of the Customer table using random seek values for the primary key.

Select all rows in a small table Returned all rows in the ProductCode table (200 records) sequentially.

Search for a non-indexed value Scanned the entire Product table (1000 records) and returned six rows from that table with the specified value in the ProductCode field.

Select and update 20 rows Selected 20 rows from the Customer table using random seek values for the primary key, and updated values of the LastOrderDate and TimesOrderPlaced fields.

Insert 20 rows Added 20 rows to the Customer table using random values for the primary key.

Delete 20 rows Selected 20 rows from the Customer table using the values for the primary key added in the preceeding Insert test, and deleted them.

Two table join Selected one row from the Customer table and 18 rows from the OrderEntry table joined to the Customer table by CustID.

Benchmark Results

The tables below list the results of each of the individual timed tests against the sample database, using each of the database access methods tested. The 32-bit test suite was run using Microsoft Visual Basic 4.0 32-bit edition.

The Btrieve direct API tests were included in the 32-bit test suite to provide a basis for comparison with ActiveX Controls running in single-record access mode, even though problems with the internal Unicode storage used by VB4/32 for user-defined type data rendered the numeric fields returned by the Btrieve API calls unusable in VB4.

Jet DAO access to Btrieve in VB4 32-bit is limited to ODBC data sources, so we used the ODBC Interface for Btrieve from Pervasive Software to run the 32-bit DAO tests. We also included a test using direct calls to the ODBC interface as a basis for comparison.

32-bit Tests Smithware ActiveX Controls Smithware ActiveX (Extended Ops Mode) Btrieve direct API DAO SQL Passthru (ODBC) Jet MDB Query (ODBC) ODBC API
Select row by index 20 times 0.117 0.117 0.094 2.160 8.420 2.127
Select all rows in a small table 0.723 0.306 0.635 1.605 1.766 1.458
Search for a non-indexed value 3.282 0.158 3.128 0.177 0.802 0.187
Select and update 20 rows 0.250 0.247 0.172 7.846 15.529 7.639
Insert 20 rows 0.121 0.123 0.098 6.381 7.440 6.291
Delete 20 rows 0.148 0.146 0.155 6.635 17.338 6.634
Two-table join 0.220 0.053 0.078 0.410 1.548 0.334
TOTAL TIME 4.861 1.150 4.360 25.214 52.843 24.670

The 16-bit test suite was run using Microsoft Visual Basic 4.0 16-bit edition.

The code used by the tests was the same as for the 32-bit suite, except that since VB4/16 has a native Jet DAO interface for Btrieve, we used this method instead of an ODBC data source for the Jet DAO tests.

We also included VBX Controls for Btrieve in the 16-bit test suite since the 16-bit version of Visual Basic 4.0 still supports VBX controls. The VBX tests did not use the Smithware Extended Operations VBX control, and were limited to single-record operations.

16-bit Tests Smithware ActiveX Controls Smithware ActiveX (Extended Ops Mode) Smithware VBX Controls Btrieve direct API Jet DAO (Btrieve) Jet MDB Query (Btrieve)
Select row by index 20 times 0.136 0.134 0.340 0.086 6.784 6.173
Select all rows in a small table 0.836 0.249 2.611 0.530 1.620 1.550
Search for a non-indexed value 3.763 0.055 10.902 2.670 6.370 5.989
Select and update 20 rows 0.261 0.263 0.553 0.153 7.515 6.848
Insert 20 rows 0.141 0.143 0.281 0.088 4.855 0.323
Delete 20 rows 0.155 0.156 0.331 0.135 6.473 6.867
Two-table join 0.146 0.064 0.501 0.067 1.537 0.938
TOTAL TIME 5.438 1.064 15.519 3.729 35.154 28.688

Benchmark Project and Data

If you would be interested in trying to reproduce our results or in looking more closely at the test methods, you can download the benchmark project source code and sample data below. The project source code includes source and project files only, no additional VBX, OCX, or DLL files.

The sample data is compressed using PKZIP 2.04. Uncompressed it requires about 10Mb. The project files are also zipped.



Back to Activex Controls for Btrieve.

 

Copyright © 1988, 1998 by Smithware, Inc. All rights reserved.
Smithware, Controls for Btrieve, DDF Builder, DDF Sniffer, Btrieve Developer's Journal, and Power Tools for Btrieve are trademarks of Smithware, Inc. Btrieve is a registered trademark of Pervasive Software, Inc. ActiveX, Windows, Windows NT, and Internet Explorer are trademarks of Microsoft Corp. All other product or brand names are trademarks or registered trademarks of their respective owners. Legal Notice.