2012-01-03 38 views
2

我從http://olex.openlogic.com/packages/sqlite/3.7.2 檢查了3.7.2 SQLite的步驟操作我也參加了最新的3.7.9從http://www.sqlite.org/sqlite-amalgamation-3070900.zip爲什麼SQLite的3.7.2比3.7.9快3倍

都使用相同的編譯Borland的C++編譯器5.5.1設置

@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我需要500毫秒執行25000個操作,其中3.7.9採用樹倍以上的時間。

的SQL語句是平原

select * from Cards 

其中卡是具有16個文本和4個整數列的表

已SQLite的成爲了最新版本的慢?

+0

500ms只能遍歷25000條記錄?我很確定你做錯了什麼。在我的測試中(使用我的包裝),我可以使用3.7.9版本在不到150ms的時間內迭代140000條記錄,這比使用先前版本更快。如果沒有更多的代碼,就無法猜測問題出在哪裏。 – Linas 2012-01-03 11:23:51

回答

1

AFAIK這些版本之間沒有太大的區別,關於執行速度。最新的3.7.9速度更快。

我認爲你不要在你的兩個實現中使用相同的內存管理器。我猜你的malloc/free外部引用不是用同樣的方法實現的:你的3.7.2可能使用Delphi FastMM4,而3.7.9可能使用默認的Windows或MSCRT堆。

相關問題