为什么SQLite 3.7.2在Step操作上比3.7.9快3倍



我已经从http://olex.openlogic.com/packages/sqlite/3.7.2我还从http://www.sqlite.org/sqlite-amalgamation-3070900.zip

使用相同的Borland C++编译器5.5.1设置编译两者

@echo off
set PATH=C:BorlandBcc55Bin;%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

对于3.7.2,我需要500ms来执行25000步操作,其中3.7.9需要更多的树时间。

SQL语句是纯

select * from Cards

其中Cards是一个包含16个文本和4个整列的表

SQLite在最近的版本中变慢了吗?

AFAIK在实现速度方面,这些版本之间没有太大区别。最新的3.7.9更快。

我认为您在两个实现中没有使用相同的内存管理器。我猜您的malloc/free外部引用不是通过相同的方法实现的:您的3.7.2可能使用Delphi FastMM4,而3.7.9可能使用默认的Windows或MSCRT堆。

最新更新