У меня есть относительно сложные sqlite-запросы, запущенные в моем приложении для iPhone, а некоторые занимают слишком много времени (более 15 секунд). В базе данных всего 430 записей. Одна вещь, которую я заметил, заключается в том, что открытие нового соединения с базой данных (которое я делаю только один раз) и выполнение результатов запроса (с sqlite3_step()
) приводит к запуску sqlite3_backup_init()
и sqlite3_enable_shared_cache()
, которые занимают 4450 мс и 3720 мсек соответственно времени обработки в течение всего периода тестирования. Я попытался использовать sqlite3_enable_shared_cache(0);
, чтобы отключить совместное кэширование, прежде чем открывать соединение с базой данных, но это, похоже, не влияет.sqlite3_enable_shared_cache и sqlite_backup_init замедление выполнения на iPhone
Кто-нибудь знает, как отключить их, чтобы я мог улучшить скорость?
Это кажется странным. Я бы не ожидал, что любая из этих функций будет вызываться внутренним кодом SQLite (кроме, возможно, sqlite3_enable_shared_cache с аргументом 0). Вы используете какую-либо оболочку или просто C api? –
Просто C api, который поставляется с iPhone SDK. –