порт SQLite 1.0

Discussing libraries simplifying applications development
  • diamond wrote:Бубна не нужно. В SDK есть две версии программы pe2kos.exe, для создания программ, использующих путь, и не использующих.
    Спасибо, а я не знал - думал, что самому придется писать :)
  • Особого прогресса нет, мешают странные баги.
    А именно: при попытке вставить много (хотя бы 100) строк в таблицу возникает ошибка "out of memory", или начинает глючить парсер, ругаясь на верные команды. Иногда (неясно в каких случаях - похоже случайно) случается assertion в btree.c.

    Для тестирования добавлена команда benchmark, которая выполняет 100 раз запрос "insert into test values(%d)" - в процессе выполнения которого и происходит ошибка. Таблицу test нужно создать вручную: create table test (k integer).
    Если кому интересно - посмотрите, вдруг что найдете :)

    Еще никак не удается сделать в VC++ obj-файл, который загружался бы как DLL Kolibri. Чтобы сделать метку EXPORTS использую такой прием: объявляю константу XPORTS, которая экспортируется как _XPORTS и заменяю в hiew на EXPORTS (VC++ не умеет не добавлять подчеркивания).
    Attachments
    sqlite-kos-bin.7z (102.48 KiB)
    сама прога
    Downloaded 359 times
    sqlite_kos-src.7z (249.27 KiB)
    исходники
    Downloaded 365 times
  • По совету diamond'a увеличил стек с 4К до 64К - все работает! :)

    Эта версия хранит файлы БД в папке .\sqlite (она должна существовать в папке, где лежит sqlite.kex).

    Проведена первая проверка производительности: 1000 вставок 1 целого числа в таблицу делается (под чистой Колибри) за 0.7 сек. Для сравнения: MySQL 5.0 под WinXP за 0.37 сек.
    Attachments
    Downloaded 372 times
  • перед началом вставок попробуй начать транзакцию, тогда sqlite должен уделать mysql ;)
    статья по теме http://habrahabr.ru/blogs/webdev/42121/
  • Действительно, добавление 1000 записей за одну транзакцию из SQLite под Kolibri занимает 0.2 секунды (при расположении базы как на рамдиске, там и на жестком диске). Причина - при каждом сохранении данных SQLite создает файл журнала и модифицирует основной файл базы.
    Для MySQL под WinXP транзакция, наоборот, ухудшила результаты до 0.43 сек.
  • В этом смысле MySQL странно себя ведёт, хотя я не замечал снижения скорости работы. Использование транзаций (предположительное добавление записей группой, а не по одной) в PostgreSQL увеличивает скорость "записи" в базу.

    ..bw
  • barsuk wrote:Еще никак не удается сделать в VC++ obj-файл, который загружался бы как DLL Kolibri. Чтобы сделать метку EXPORTS использую такой прием: объявляю константу XPORTS, которая экспортируется как _XPORTS и заменяю в hiew на EXPORTS (VC++ не умеет не добавлять подчеркивания).
    Это уже вопрос к нашим ЯВУшникам...
  • А __declspec( dllexport ) не помогает ?
  • http://msdn.microsoft.com/en-us/library/bb687850.aspx
    3 способа описаны, у меня получилось только последним первым (последним он описан где-то в другом месте) (через .DEF файл)
    Пробовал на 2008 студии, сырцы sqlite с ходу собираться не захотели, экспериментировал на "hello world"-программке
  • vectoroc
    Можешь выложить def, который нужно написать и результат (obj-файл)?
  • На другом имени проверял.
    Если вписываешь EXPORTS, в таблицу подставляется пустая строка.
    В МСДН написано, что, чтобы использовать зарезервированные слова в аргументах, эти слова надо заключать в двойные кавычки, но в таком случае в таблицу попадает "EXPORTS" вместе с кавычками :/
  • Понятно...
    Проблема в том, что, даже если вручную в hiew пофиксить _xports на EXPORTS, obj-файл не загружается в качестве DLL. Видимо, VC++ генерит obj-файлы несколько другого формата, чем fasm или что-то в этом роде.
  • Эх.. а уж в закромах нашел программку, которая может сама найти симлинк, и подправить его :)
    gcc линкует набор ".obj" файлов (COFF) в ".a" файл. Студия наверно поступает подобным же образом, кладёт .obj файлы в ".lib" (кстати, у этого файла в самом начале написано !<arch>)
  • Компилируй через ассемблер. В итоге объектник будет раза в три меньше.
  • Who is online

    Users browsing this forum: No registered users and 10 guests