Избавьтесь от базы данных SQLite, если сохранение объекта в базе данных и выполнение запроса - это только то, что вам нужно в вашем приложении. Моя проблема с базой данных Android по умолчанию заключается в написании большого количества кода для простой вещи.

В своем тесте я рассматривал две базы данных: Realm (из-за множества хороших слов, которые я слышал о ней) и SnappyDB (я обнаружил, что Uber ее использует). Каждый предоставляет свой тест по сравнению с родным SQLite.

Поскольку мне не удалось найти документ, в котором можно было бы сравнить эти две базы данных, я решил сделать это сам, создав и интегрировав их в проект Android. IT позволяет мне сравнивать скорость вставки, поиска списка объектов и удаления всех объектов. Я попытался использовать лучший метод для каждого предложения, чтобы создать этот тест.

Тестовое устройство

Все результаты основаны на устройстве Nexus 5 на базе Android 6.0.1.

Процесс тестирования

На экране несколько кнопок, как видно на скриншоте.

Полученные результаты

Я нашел следующие результаты после 10 попыток в разных условиях.

Выводы

  • У Realm супер БОЛЬШОЙ !!! проблема / ограничение, Realm не работает в модульных тестах, Realm работает только в инструментальных тестах.
  • Если вы выберете неправильный подход, то попадете в беду, как я упал. Стоимость использования транзакции МИНУТЫ !. Вы видите, в какой степени время вставки упало с 300 до 1,7 с при выполнении вставки в транзакции (а не транзакции на вставку как показано здесь).
  • Время чтения / поиска в Realm довольно быстрое и почти такое же, если игнорировать первую попытку. Однако допуск в SnappyDB очень высок - от 2 мс до 187 мс. Худший случай случился, когда я попытался найти «1», а лучший случай случился, когда я попытался найти «56248». Он показывает, что SnappyDB находит быстрее, когда вероятность содержать значение мала.
  • В Realm есть особый способ удаления типа объекта путем удаления всех типов внутри транзакции. Однако я не нашел такого способа для SnappyDB, и поэтому он намного медленнее, потому что я повторяю список объектов и удаляю их один за другим.

использованная литература