Speed improvements based on 64-bit MinGW.

SQLite 3.14.2, built with MinGW 64-bit. - 
https://sourceforge.net/projects/mingw-w64/?source=typ_redirect
gcc -m64 -O2 -DSQLITE_THREADSAFE=0 shell.c sqlite3.c -o sqlite3.exe
gcc -g -shared extension-functions.c -o extension-function.dll
Built with SQLITE options of default

Module SQL Script (146k records)        T1 Sec  T2 Sec  T3 Sec  T4 Sec  Delta   
Delta   Delta
Processing Module 1 of 8: (CTEs)                138     110     92      49      
125%    150%    282%
Processing Module 2 of 8:               26      20      17      14      130%    
153%    186%
Processing Module 3 of 8:               34      28      23      18      121%    
148%    189%
Processing Module 4 of 8:               14      7       6       5       200%    
233%    280%
Processing Module 5 of 8:               9       6       6       4       150%    
150%    225%
Processing Module 6 of 8:               30      14      12      11      214%    
250%    273%
Processing Module 7 of 8: (CTEs)        290     222     212     86      131%    
137%    337%
Processing Module 8 of 8:               14      14      10      10      100%    
140%    140%
Total Processing Time:                  557     424     374     200     131%    
149%    279%

Test 1: 32-Bit 3.13 (sqlite.org), No PRAGMA (Baseline)
Test 2: 32-bit 3.13 (sqlite.org), with PRAGMA but not temp_store = 2;
Test 3: 64 bit 3.14.2 MinGW, with PRAGMA but not temp_store = 2;
Test 4: 64 bit 3.14.2 MinGW, all PRAGMA

PRAGMAs used...
        PRAGMA synchronous = 0;
        PRAGMA read_uncommitted = 1;
        PRAGMA locking_mode = exclusive;
        PRAGMA journal_mode = Off;
        PRAGMA temp_store = 2;

For reference both sets of tests on same machine; Windows 10, i5-3470 3.20GHz, 
12GB RAM and on internal spinning HDD.  There is a slight improvemnt (~5% 
faster) going to SSD but wanted to stay consistent.

I don't plan on testing Cygwin, I am happy with the MinGW results.

Thanks everyone for your help.

Richard

-----Original Message-----
From: Rousselot, Richard A
Sent: Monday, August 15, 2016 12:20 PM
To: sqlite-users@mailinglists.sqlite.org
Cc: Rousselot, Richard A
Subject: Re: [sqlite] 64-bit SQLite3.exe

Speed improvements based on 64-bit Visual Studio build.

SQLite 3.14.0, built with MSVC 18.00.30723 for x64.
Built with VS options /O2 /Ot /Ox.
Built with SQLITE options of SQLITE_ENABLE_FTS3 SQLITE_ENABLE_STAT2 
SQLITE_ENABLE_RTREE.

Module SQL Script (146k records)        T1 Sec  T2 Sec  T3 Sec  T4 Sec  Sp Inc  
Sp Inc  Sp Inc
Processing Module 1 of 8: (CTEs)                138      110    96      56      
125%    144%    246%
Processing Module 2 of 8:               26      20      18      15      130%    
144%    173%
Processing Module 3 of 8:               34      28      26      21      121%    
131%    162%
Processing Module 4 of 8:               14      7       7       6       200%    
200%    233%
Processing Module 5 of 8:               9       6       5       4       150%    
180%    225%
Processing Module 6 of 8:               30      14      13      11      214%    
231%    273%
Processing Module 7 of 8: (CTEs)        290     222     194     100     131%    
149%    290%
Processing Module 8 of 8:               14      14      11      11      100%    
127%    127%
Total Processing Time:                  557     424     372     227     131%    
150%    245%

Test 1: 32-Bit 3.13 (sqlite.org), No PRAGMA (Baseline)
Test 2: 32-bit 3.13 (sqlite.org), with PRAGMA but not temp_store = 2;
Test 3: 64 bit 3.14.0 Visual Studio 18, with PRAGMA but not temp_store = 2;
Test 4: 64 bit 3.14.0 Visual Studio 18, all PRAGMA

PRAGMAs used...
        PRAGMA synchronous = 0;
        PRAGMA read_uncommitted = 1;
        PRAGMA locking_mode = exclusive;
        PRAGMA journal_mode = Off;
        PRAGMA temp_store = 2;

I am still trying to figure out how to make a 64-bit build in MinGW.  There is 
a nice installer for 32-bit but not for 64-bit, go figure.

Hopefully I have the PRAGMAs right.  If there is a better configuration for 
speed, let me know.

Richard
This communication is the property of CenturyLink and may contain confidential 
or privileged information. Unauthorized use of this communication is strictly 
prohibited and may be unlawful. If you have received this communication in 
error, please immediately notify the sender by reply e-mail and destroy all 
copies of the communication and any attachments.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to