Performance 为什么SQLite 3.7.2在步进操作上比3.7.9快3倍

Performance 为什么SQLite 3.7.2在步进操作上比3.7.9快3倍,performance,sqlite,delphi,select,Performance,Sqlite,Delphi,Select,我已经从中签出了3.7.2 SQLite 我还采用了最新的3.7.9版本 使用相同的Borland C++编译器5.5.1设置< /P>编译 @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 ex

我已经从中签出了3.7.2 SQLite 我还采用了最新的3.7.9版本

使用相同的Borland C++编译器5.5.1设置< /P>编译

@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
对于3.7.2 I,执行25000步操作需要500毫秒,其中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堆。

500ms仅迭代25000条记录?我很肯定你做错了什么。在我的测试中(使用包装器),使用3.7.9版本,我可以在不到150ms的时间内迭代140000条记录,这比使用以前的版本要快。如果没有更多的代码,就无法猜测问题所在。