Способ узнать, какие параметры компиляции использовались для сборки SQLite - PullRequest
9 голосов
/ 19 мая 2009

Во время моих тестов производительности я обнаружил, что версия SQLite, которую Apple предоставляет на iPhone 3.0, значительно быстрее, чем моя самоскомпилированная версия SQLite слияния. Поэтому мой вопрос: есть ли способ узнать, какие варианты компиляции Apple использовала?

Существует ли тестовое приложение, которое распечатывает все установленные по умолчанию прагамы и параметр sqlite3_config?

Ответы [ 3 ]

11 голосов
/ 07 января 2013

Вы можете использовать прагму compile_options (или связанные функции, упомянутые в связанной документации), чтобы просмотреть параметры времени компиляции, которые использовались при сборке SQLite. Однако доступность этой прагмы (и связанных с ней функций) зависит от того, была ли она включена во время компиляции или нет. Документация по SQLite гласит:

Поддержка диагностических функций sqlite3_compileoption_used () и sqlite3_compileoption_get () может быть исключена путем указания параметра SQLITE_OMIT_COMPILEOPTION_DIAGS во время компиляции.

Таким образом, вероятно, ваш дистрибутив не включил эту функцию во время компиляции, а это значит, что вы не сможете просматривать параметры.

2 голосов
/ 19 мая 2009

Нет способа спросить libsqlite о его точной конфигурации, если не попробовать все возможные перестановки и протестировать каждую из них, чтобы увидеть, что ведет себя одинаково (если Apple не произвела пользовательских изменений). Лучшее, что вы можете получить, позвонив по номеру sqlite3_libversion, который возвращает номер версии sqlite.

1 голос
/ 01 июня 2009

Похоже, единственное отличие в настройках прагмы - это cache_size, который по умолчанию 2000, но на iPhone это 500.

В некоторых системах можно прочитать настройки компилятора следующим образом: objdump --full-contents --section .GCC.command.line

...