EasyTable:
The fastest DB engine.
As we promised earlier, now we start publishing the results of some
investigations AidAim Software carried out for DB engines presented on the
market. Here are the speed tests for some products of this kind. Diagram 1
presents the results of all existing speed tests for the products
mentioned above. Diagram 2
presents reading speed test results, and Diagram 3
presents writing tests results. Comparison of all these products by
searching speed using templates is presented at Diagram 4 (find
first and find next results are compared for equality on 5 conditions.
They are: Integer, Sting, Date/Time, Integer & String & DateTime,
String with partial compare). Diagram 5 shows
searching speed when searching for the single record matching the search
criteria of the 'equiality' type (Locate by the same five conditions). Diagram 6
presents the result of comparison of the same DB engines by filtering
speed (the same five conditions). Diagram 7 shows
the results of comparison by BLOB fields processing speed.







Testing had been executed on a table containing 10 000 records and
including Integer/DateTime/String fields filled with data obtained by
means of the standard program random-number generator, Randomize. For
testing search engines after generating data, a random sequence of 1000
records is chosen, which is 10% of the whole number of records. This
sequence of different records is then replaced with another sequence
consisting of the same record repeatedly duplicated. This operation is
performed for executing FindNext and filtering search.
Let us now
describe the tests themselves. The very first group of tests includes
basic operations with tables, such as adding records, updating records,
deleting records, reading table to memory (it is used for emulating direct
operating with tables, without using DBGrid, DBNavigator and their
analogues), as well as moving the cursor to a defined position. TTable
uses the following methods for implementation of these operations: Insert,
Edit, Post, Delete, First, Next, MoveBy. All the data is prepared in
advance and is stored in dynamic arrays ids, ints, dates. Time measurement
is the same for all the tests and is realized by means of Win API function
GetTickCount, for this function measures time in milliseconds in contrast
to Now function. Execution times for all such blocks are summed and then
averaged out by test passes number (simple average of a single pass time
is calculated). We pass through each test 10 times. The measurements
results are given in Table 1.
Table
1. Tests passing time.
DB
Engine |
Paradox |
DBISAM |
EasyTable |
MiniTable |
TurboDB |
TinyDB |
Basic
I/O operations |
61.368 |
2,035.634 |
21.810 |
211.564 |
3,452.947 |
3,376.711 |
Reading |
51.679 |
2,000.326 |
0.643 |
167.935 |
3,347.995 |
6.268 |
Read
records |
1.034 |
0.811 |
0.638 |
0.685 |
1.100 |
3.205 |
Navigate
records |
50.645 |
1,999.515 |
0.005 |
167.250 |
3,346.895 |
3.063 |
Writing |
9.689 |
35.308 |
21.167 |
43.629 |
104.952 |
3,370.443 |
Insert
records |
4.163 |
13.811 |
6.221 |
14.611 |
50.434 |
1,173.703 |
Edit
records |
2.339 |
5.996 |
4.082 |
5.593 |
9.352 |
2,130.426 |
Delete
records |
3.187 |
15.501 |
10.864 |
23.425 |
45.166 |
66.314 |
Searching for all records
(find) |
400.136 |
295.770 |
12.406 |
10,518.236 |
Failed! |
Failed! |
FindFirst
integer |
5.915 |
39.513 |
1.817 |
764.795 |
Error |
510.567 |
FindFirst
string |
102.944 |
47.414 |
2.190 |
1,042.525 |
Error |
899.207 |
FindFirst
datetime |
6.993 |
48.052 |
2.114 |
820.494 |
Error |
Error |
FindFirst
all fields |
108.660 |
48.989 |
4.225 |
1,636.344 |
Error |
Error |
FindFirst
substring |
101.860 |
48.410 |
1.920 |
990.140 |
Error |
928.571 |
|
0.000 |
0.000 |
0.000 |
0.000 |
Error |
0.000 |
FindNext
integer |
0.080 |
3.887 |
0.015 |
759.315 |
Error |
1.566 |
FindNext
string |
0.585 |
16.972 |
0.035 |
1,057.160 |
Error |
2.028 |
FindNext
datetime |
0.120 |
6.014 |
0.015 |
819.205 |
Error |
Error |
FindNext
all fields |
0.410 |
19.845 |
0.040 |
1,650.833 |
Error |
Error |
FindNext
substring |
0.295 |
16.674 |
0.035 |
977.425 |
Error |
2.196 |
Searching for a single record
(Locate) |
44.715 |
141.446 |
1.238 |
135.841 |
Failed! |
1,807.834 |
Locate
integer |
5.145 |
40.434 |
0.130 |
0.608 |
1,393.639 |
5.099 |
Locate
string |
0.504 |
2.047 |
0.160 |
0.654 |
Error |
5.974 |
Locate
datetime |
6.851 |
46.998 |
0.180 |
133.220 |
1,478.611 |
5.276 |
Locate all
fields |
31.700 |
49.857 |
0.598 |
0.696 |
Error |
1,782.780 |
Locate
substring |
0.515 |
2.110 |
0.170 |
0.663 |
Error |
8.705 |
Filtering |
1.080 |
14.793 |
0.065 |
6.215 |
Failed! |
Failed! |
Filter
integer |
0.080 |
2.950 |
0.005 |
0.945 |
2.239 |
1.653 |
Filter
string |
0.130 |
2.958 |
0.020 |
1.265 |
Error |
2.124 |
Filter
date |
0.070 |
2.965 |
0.000 |
1.025 |
Error |
Error |
Filter all
fields |
0.530 |
3.005 |
0.015 |
1.860 |
Error |
Error |
Filter
substring |
0.270 |
2.915 |
0.025 |
1.120 |
Error |
1.835 |
BLOB
processing |
400.136 |
446.397 |
233.674 |
36,615.899 |
946.996 |
3,159.677 |
Insert
BLOB Data
|
216.186 |
110.874 |
111.218 |
256.757 |
374.595 |
2,520.170 |
Read BLOB
Data
|
96.425 |
104.195 |
103.122 |
118.016 |
190.057 |
60.420 |
Delete
BLOB Data |
87.525 |
231.328 |
19.334 |
36,241.126 |
382.344 |
579.087 |
All
tests |
835.161 |
2,934.040 |
269.193 |
47,487.755 |
Failed! |
Failed! |
We also give source
codes of the testing program for each DB engine. Due to some
distinctions of functions realization in different programs, we used
different testing programs for any of the products being tested, using the
same measurement principles. Any comer may carry out the same measurements
and make sure in reliability of the results presented here. You may also
be free in testing the products presented here and change the measurements
principles in order to obtain, for example, the dependency of DB engine(s)
operating speed on the number of records. Furthermore, you may change any
of the programs presented here in order to test any other product. In any
case, with any publishing of any investigations using the materials
presented here (including program(s) for measurements) or the measurement
principles, you must needs refer to AidAim Software as the author and the
article itself.
EasyTable detailed description is here. You may download EasyTable trial
version for free.
|