Почему SQLite 3.7.2 в 3 раза быстрее, чем 3.7.9 в пошаговых операциях - PullRequest
2 голосов
/ 03 января 2012

Я проверил 3.7.2 SQLite из http://olex.openlogic.com/packages/sqlite/3.7.2 Я также взял последнюю версию 3.7.9 из http://www.sqlite.org/sqlite-amalgamation-3070900.zip

Скомпилировал оба с одинаковыми настройками Borland C ++ Compiler 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 мсек, чтобы выполнить 25 000 шагов, в то время как 3.7.9 занимает в дереве больше времени.

Оператор SQL прост

select * from Cards

где Cards - это таблица с 16 текстовыми и 4 целочисленными столбцами

Не стал ли SQLite медленнее в последних версиях?

1 Ответ

1 голос
/ 03 января 2012

AFAIK, между этими версиями нет большой разницы в скорости реализации. Последний 3.7.9 быстрее.

Я думаю, что вы не используете один и тот же менеджер памяти в ваших двух реализациях. Я предполагаю, что ваши внешние ссылки malloc / free не реализованы одним и тем же способом: ваш 3.7.2 может использовать Delphi FastMM4, тогда как 3.7.9 может использовать кучу Windows или MSCRT по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...