Performance 为什么SQLite 3.7.2在步进操作上比3.7.9快3倍
我已经从中签出了3.7.2 SQLite 我还采用了最新的3.7.9版本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
使用相同的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条记录,这比使用以前的版本要快。如果没有更多的代码,就无法猜测问题所在。