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

发布于 2024-12-24 19:53:54 字数 1229 浏览 1 评论 0原文

我已经从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情域 2024-12-31 19:53:54

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文