为什么 SQLite 3.7.2 在 Step 操作上比 3.7.9 快 3 倍
我已经从 http://olex.openlogic.com/packages 查看了 3.7.2 SQLite /sqlite/3.7.2 我还从 http://www.sqlite.org/sqlite- 获取了最新的 3.7.9 amalgamation-3070900.zip
使用相同的 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 中我需要 500ms 来执行25 000 个步骤操作,其中 3.7.9 花费了树倍的时间。
SQL 语句很简单,
select * from Cards
其中 Cards 是一个包含 16 个文本列和 4 个整数列的表
SQLite 在最近的版本中是否变慢了?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
AFAIK 在执行速度方面这些版本之间没有太大区别。最新的 3.7.9 速度更快。
我认为您在两个实现中没有使用相同的内存管理器。我猜你的 malloc/free 外部引用不是通过相同的方法实现的:你的 3.7.2 可能使用 Delphi FastMM4,而 3.7.9 可能使用默认的 Windows 或 MSCRT 堆。
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.