powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Результаты первого знакомства с SQLite, SQLCipher и MinGW.
3 сообщений из 3, страница 1 из 1
Результаты первого знакомства с SQLite, SQLCipher и MinGW.
    #37686951
metos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.к. в новом проекте будет использоваться решение, базирующееся на SQLite, принялся знакомиться с этим зверем поближе (до этого был знаком поверхностно). Так же в требованиях прописана возможность шифрования информации. Поэтому с SQLCipher тоже приходится знакомиться.

Для предварительной оценки скорости и размеров файлов БД решил провести небольшой тест (источник http://geomapx.blogspot.com/2009/09/sqlite-3617-mobigroup2.html )

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
create table facts(a1 int,a2 int,a3 int,a4 int);

attach database 'd:\big10M.db' AS big10M;

insert into facts
select
    cast(abs(random())/9223372036854775807.*18 as int),
    cast(abs(random())/9223372036854775807.*18 as int),
    cast(abs(random())/9223372036854775807.*18 as int),
    cast(abs(random())/9223372036854775807.*18 as int)
from bigtbl;
IRND: CPU Time: user <UTIME> sys <STIME>

create index facts_a1_idx on facts(a1);
create index facts_a2_idx on facts(a2);
create index facts_a3_idx on facts(a3);
create index facts_a4_idx on facts(a4);
CI4: CPU Time: user <UTIME_SUM> sys <STIME_SUM>

select count(*) from facts where a1=2 and a2=2 and a3=2 and a4=2;
106
SEL1: CPU Time: user <UTIME> sys <STIME> 

create index facts_complex_idx on facts(a1,a2,a3,a4);
CCI: CPU Time: user <UTIME> sys <STIME>

select count(*) from facts where a1=2 and a2=2 and a3=2 and a4=2;
106
SEL2: CPU Time: user <UTIME> sys <STIME>



Результаты теста на разных сборках:
SQLite ShellIRNDCI4SEL1CCISEL2SQLite orig 23.18 (0.79) 288.00 (400.00) 0.84 (0.40) 99.74 (109.37) 0 (0)SQLite MinGW fast 36.48 (0.56) 336.00 (236.00) 1.31 (0.08) 123.94 (59.99) 0 (0)SQLite VC2008 fast 21.24 (0.46) 120.00 (1.36 ) 0.61 (0.05) 53.68 (0.47) 0 (0)SQLCipher MinGW def 40.78 (1.06) 412.00 (411.00) 6.36 (0.31) 146.61 (110.09) 0 (0)SQLCipher MinGW fast 39.56 (0.59) 356.00 (232.00) 5.19 (0.12) 134.62 (59.62) 0 (0)

База big10M.db содержит единственную таблицу bigtbl с 10 миллионами записей.
Значения в скобочках содержат sys time (<STIME>).
Тестировалось всё на SQLite версии 3.7.9 и SQLCipher версии 2.0.3 (sqlite 3.7.9).
SQLite orig - оригинальный shell ( http://www.sqlite.org/sqlite-shell-win32-x86-3070900.zip ).
SQLCipher тестировался на шифрованной БД (ключ '123').
def - стандартные опции сборки.
fast - оптимизированные опции сборки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
-DSQLITE_ENABLE_STAT3 \
-DSQLITE_DEFAULT_RECURSIVE_TRIGGERS=0 \
-DSQLITE_DEFAULT_FILE_FORMAT=4 \
-DSQLITE_DEFAULT_PAGE_SIZE=8192 \
-DSQLITE_DEFAULT_CACHE_SIZE=8000 \
-DSQLITE_DEFAULT_TEMP_CACHE_SIZE=2000 \
-DSQLITE_TEMP_STORE=2 \
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
-DSQLITE_THREADSAFE=0 \
-DSQLITE_DEFAULT_LOCKING_MODE=1 \
-DSQLITE_ENABLE_LOAD_EXTENSION=1



Тестировалось всё на Win7 x64 (Xeon 2.79 GHz, RAM 12 GB).

Странно, что оригинальный sqlite shell оказался быстрее моей fast сборки. Видимо нужно для MinGW какие то параметры оптимизации указывать.
А вот сборка на VS2008 просто какие то чудеса показывает. Даже появляются сомнения в правильной работе sqlite )))
SQLCipher только на выборке значительно отстаёт от SQLite.

Вот теперь как то нужно умудриться собрать SQLCipher под VS2008 .....
...
Рейтинг: 0 / 0
Результаты первого знакомства с SQLite, SQLCipher и MinGW.
    #37688351
metos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалось собрать SQLCipher 2.0.3 под VC2008 (OpenSSL 1.0.0g).

Вот обновлённая таблица:
SQLite ShellIRNDCI4SEL1CCISEL2SQLite orig 23.18 (0.79) 288.00 (400.00) 0.84 (0.40) 99.74 (109.37) 0 (0)SQLite MinGW fast 36.48 (0.56) 336.00 (236.00) 1.31 (0.08) 123.94 (59.99) 0 (0)SQLite VC2008 fast 21.24 (0.46) 120.00 (1.36 ) 0.61 (0.05) 53.68 (0.47) 0 (0)SQLCipher MinGW def 40.78 (1.06) 412.00 (411.00) 6.36 (0.31) 146.61 (110.09) 0 (0)SQLCipher MinGW fast 39.56 (0.59) 356.00 (232.00) 5.19 (0.12) 134.62 (59.62) 0 (0)SQLCipher VC2008 fast 23.37 (0.23) 144.00 (1.28 ) 4.31 (0.09) 65.85 (0.57) 0 (0)
Так что MinGW под виндою себя никак не оправдывает.
...
Рейтинг: 0 / 0
Результаты первого знакомства с SQLite, SQLCipher и MinGW.
    #37688489
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metosТак что MinGW под виндою себя никак не оправдывает.Это не так. На тестах, проводимых с правильными ключами компиляции VC и MinGW последних версий, результирующие бинарники показывают близкие результаты.

Надо разбираться в опциях компиляции, потом уже критиковать.

Хотя сам процесс компиляции у MinGW под Windows существенно медленнее. GCC под *nix работает быстрее.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Результаты первого знакомства с SQLite, SQLCipher и MinGW.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]