Hi All,

I Carried out a small assay comparing performance between SQLite-2.8.16 &
SQLite-3.3.9;
Over Multiple platforms & Operating Environments.

Please consider the observations of the assay below. There seems to be a
very clear
and visible difference in performance of SQLite & SQLite3; for which
performance
acceptability seems questionable on some embedded platforms: -
 - SQLite & SQLite3 on the same platform.
 - SQLite on 2 different OS on same platform
 - SQLite3 on 2 differnt OS on same platform

My Intentions are towards exploring the reason behind these differences; and
what can be
done to counter these performance differences. I'm seeking some pointers
from the Community.

Many Thanks In Advance.

Test Setups:
+------------------------------+--------------+-------------+-------------+---------+
| CPU           |    (x86)     |  (x86_64)    |             |
|         |
|---------------|   P4 2.4 GHz |  Core2Duo    |             |   Athlon    |
Davinci |
| OS            |              | 1.86GHz x 2  |    BSP15    |   X2 (64)
|         |
+---------------+--------------+--------------+-------------+-------------+---------+
| WinXP(32)     |      X       |      X       |             |
|         |
+---------------+--------------+--------------+-------------+-------------+---------+
| WinXP(64)     |              |      X       |             |      X
|         |
+---------------+--------------+--------------+-------------+-------------+---------+
| Linux(32)     |      X       |      X       |      X      |
|    X    |
+---------------+--------------+--------------+-------------+-------------+---------+
| Linux(64)     |              |      X       |             |      X
|         |
+---------------+--------------+--------------+-------------+-------------+---------+

DB Schema:
    It Consists of 4 Identical Tables
       tbl01{ code integer primary key
             ,code01
             ,code02
             ,code03
             ,code04
             ,orderField
             ,field01 }

Implementation:
   Application were written in C using SQLite & SQLite3's C API sets.

 Case I:
   SQL Insert Queries where fired in Sequential Progression; making 10
Entries
   in First Table; 100 Entries in 2nd Table; 1000 Entries in 3rd Table and
   finally 10000 Entries in 4th Table; Data below is Collective Time Taken
   to make Inserts in all 4 tables, expressed in millisecs.

    Insert             |   SQLite    |   SQLite3        -> 11110 Entries
   --------------------+-------------+-------------
    Win32 x86          |    78896    |     97800
    Win32 x86_64       |    82100    |     85000
    Win64 x86_64       |      -      |       -
    Linux32 x86        |    76900    |    100016
    Linux32 x86_64     |    87728    |     99004
    Linux64 x86_64     |    79200    |     99102
    Linux64 x64        |    79788    |     98794
    Linux BSP15        |    37888    |     37566
    Linux Davinci      |      -      |       -
   ----------------------------------+-------------

  Case II:
    SQL Select with simple query on a single table fetching all records.

    Select on Simple Qry|   SQLite    |   SQLite3       -> 10000 (x 8 Cols)
Entries
   ---------------------+-------------+-------------
    Win32 x86           |     125     |       578
    Win32 x86_64        |             |
    Win64 x86_64        |      -      |       -
    Linux32 x86         |       8     |       297
    Linux32 x86_64      |       6     |       251
    Linux64 x86_64      |       6     |       149
    Linux64 x64         |       7     |       144
    Linux BSP15         |     287     |     22069
    Linux Davinci       |      -      |       -
   -----------------------------------+-------------

  Case III:
    SQL Select with Join of 2 Tables fetching all records.

    Select on Moderate Qry|   SQLite    |   SQLite3     -> 10000 (x 15
Cols) [2 Table Join]
   -----------------------+-------------+-------------
    Win32 x86             |     5532    |      1172
    Win32 x86_64          |             |
    Win64 x86_64          |      -      |       -
    Linux32 x86           |      439    |       669
    Linux32 x86_64        |      251    |      1108
    Linux64 x86_64        |      272    |      1120
    Linux64 x64           |      259    |      1090
    Linux BSP15           |     9258    |     49773
    Linux Davinci         |      -      |       -
   -----------------------+-------------+-------------

  Case IV:
    SQL Select with Join of 3 Tables fetching redundant records.

    Select on Complex Qry|   SQLite    |   SQLite3      -> 90000 (x 22
Cols) [3 Table Join with redundant entries]
   ----------------------+-------------+-------------
    Win32 x86            |     6593    |    110157
    Win32 x86_64         |             |
    Win64 x86_64         |      -      |       -
    Linux32 x86          |      484    |   1059861
    Linux32 x86_64       |             |
    Linux64 x86_64       |             |
    Linux64 x64          |             |
    Linux BSP15          |    13525    |    Application Crashed
    Linux Davinci        |      -      |       -
   ----------------------+-------------+-------------

  Case V:
    SQL Select with Join of 4 Tables fetching all & Redundant records
[About
    9000000 Records]. Neither SQLite2 nor SQLite3 was able to give results
for
    this and program exited with raising exception for Insufficient Memory.

Thanks & Regards
Nitin K

Reply via email to