Что может вызвать крайне медленную запись в базу данных на устройстве Android? - PullRequest
0 голосов
/ 24 января 2012

У меня есть сообщение от клиента в поле, что мое приложение «необычайно медленно» при работе на HTC Incredible. Чтобы лучше диагностировать подобные проблемы, мое приложение поставляется с тестом производительности View. Это представление запускает тест, который вставляет 1, 10 и 100 строк во временную базу данных SQLite. База данных хранится во внутренней памяти телефона.

На моем HTC Evo (что примерно соответствует характеристикам Incredible), этот тест может выполнить 1 вставку за 100 мс, 10 за 150 мс и 100 за 1000 мс (1 с)

На устройстве, используемом нашим клиентом, одна вставка занимает 1000 мс, десять - 1500 мс, а 100 - 15000 (15 с).

Это в основном в 10 раз медленнее. Может ли кто-нибудь предположить, почему в этом случае операции с базами данных выполняются для этого пользователя намного медленнее, и какие шаги он может предпринять, чтобы исправить эту проблему? Эти номера указаны после перезагрузки устройства.

Это операция, которую я делаю 1, 10 или 100 раз соответственно:

private void addEvent(String title) {
    SQLiteDatabase db = eventsData.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(PerfTestSQLHelper.TIME, System.currentTimeMillis());
    values.put(PerfTestSQLHelper.TITLE, title);
    db.insert(PerfTestSQLHelper.TABLE, null, values);
}

1 Ответ

0 голосов
/ 24 января 2012

Если вы используете эталонные приложения, такие как https://market.android.com/details?id=com.aurorasoftworks.quadrant.ui.standard&feature=search_result

Тогда вы узнаете, что производительность ввода-вывода базы данных варьируется от мобильного к мобильному.

Все, что мы можем сделать с нашей стороны, это оптимизировать код.

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