I have checked out the 3.7.2 SQLite from http://olex.openlogic.com/packages/sqlite/3.7.2
I also took the latest 3.7.9 from http://www.sqlite.org/sqlite-amalgamation-3070900.zip
Compiled both with the same Borland C++ Compiler 5.5.1 settings
@echo off
set PATH=C:\Borland\Bcc55\Bin;%PATH%
rem Compilation Options
rem http://www.sqlite.org/compile.html#omitfeatures
set extra=%extra% -DSQLITE_DEFAULT_MEMSTATUS=0
set extra=%extra% -DSQLITE_TEMP_STORE=2
set extra=%extra% -DSQLITE_ENABLE_RTREE=1
set extra=%extra% -DSQLITE_ENABLE_COLUMN_METADATA=0
set extra=%extra% -DSQLITE_OMIT_DEPRECATED=1
set extra=%extra% -DSQLITE_OMIT_COMPILEOPTION_DIAGS=1
set extra=%extra% -DSQLITE_OMIT_PROGRESS_CALLBACK=1
set extra=%extra% -DSQLITE_OMIT_UTF16
set extra=%extra% -DSQLITE_OMIT_LOAD_EXTENSION=1
set extra=%extra% -DSQLITE_OMIT_EXPLAIN
@echo on
bcc32.exe -6 -O2 -c -d -u- -w- %extra% sqlite3.c
pause
With 3.7.2 I takes 500ms to execute 25 000 step operations where 3.7.9 takes tree times more time.
The SQL statement is plain
select * from Cards
where Cards is a table with 16 text and 4 integer columns
Has the SQLite became slower in the recent versions?
AFAIK there is no big difference between those versions, about implementation speed. Latest 3.7.9 is faster.
I think you do not use the same memory manager in your two implementations. I guess your malloc/free external references are not implemented by the same method: your 3.7.2 may be using Delphi FastMM4, whereas 3.7.9 may be using the default Windows or MSCRT heap.