В данной публикации представлено сравнительное тестирование скорости чтения и записи в локальную базу данных двух мобильных приложений:
- Мобильного приложения на платформе 1С 8.3.19.51
- Мобильного приложения, разработанного на языке программирования Kotlin с ORM Room (version 2.2.5)
Выбор языка разработки Kotlin связан с тем, что именно этот язык Google рекомендует использовать для разработки приложений на Android.
Выбор в качестве ORM системы "Room" обусловлен тем, что это часть компонентов архитектуры (Jetpack) от Google, которая рекомендуют ею к использованию.
Тестирование производилось на мобильном устройстве Redmi 9T.
Каждый этап тестирования производился трижды, в качестве результата бралось среднее значение.
Со стороны 1С были протестированы этапы:
- Создание, заполнение наименования номером итерации и запись 1 млн. элементов справочника без автонумерации, с отключенным контролем уникальности кодов, без иерархии, без реквизитов.
- Поиск запросом из справочника одного элемента с фильтром по наименованию.
- Создание и заполнение записей регистра сведений в 1 млн. элементов с одним измерением (УникальныйИдентификатор) и одним не индексируемом ресурсом (Строка)
- Поиск запросом из регистра сведений одной записи с фильтром по ресурсу
- Поиск запросом из регистра сведений одной записи с фильтром по измерению
Со стороны Google были протестированы этапы:
- Запись в базу данных 1 млн. объектов класса "Test" с двумя полями:
- id (String) – индексирование
- name (String)
- Запись в базу данных 1 млн. объектов класса "Test" с двумя полями:
- id (String) – индексирование
- name (String) - индексирование
id при создании заполняется уникальным идентификатором (класс UUID), преобразованным в строку,
name – заполняется номером итерации, преобразованным в строку.
- Поиск запросом из базы одного объекта "Test" с фильтром по наименованию
Результаты тестирования записи данных:
Платформа |
Запись 1 млн. элементов справочника, сек. |
Запись 1 млн. записей регистра, сек |
Запись 1 млн. объектов (индексация по id), сек |
Запись 1 млн. объектов (индексация по id и name), сек |
1С |
1946 |
1544 |
|
|
|
|
|
1466 |
1539 |
Результаты тестирования "холодного" (первый запрос) чтения данных:
Платформа |
Поиск справочника по наименованию, мс |
Поиск записи регистра сведений по измерению, мс |
Поиск записи регистра сведений по ресурсу, мс |
Поиск объекта по полю name (не индексированному), мс |
Поиск объекта по полю name (индексированному), мс |
1С |
19 |
12 |
3558 |
|
|
|
|
|
|
399 |
27 |
Результаты тестирования "горячего" (второй и последующие запросы) чтения данных:
Платформа |
Поиск справочника по наименованию, мс |
Поиск записи регистра сведений по измерению, мс |
Поиск записи регистра сведений по ресурсу, мс |
Поиск объекта по полю name (не индексированному), мс |
Поиск объекта по полю name (индексированному), мс |
1С |
2 |
1 |
2953 |
|
|
|
|
|
|
235 |
2 |
В процессе тестирования дополнительно фиксировались увеличения размеров приложений после заполнения данными.
Размер базы данных:
Платформа |
1 млн. элементов справочника, Мб |
1 млн. записей регистра сведений, Мб |
1 млн. объектов "Test"(индексация по id и name), Мб |
1С |
331 |
120 |
|
|
|
|
187 |
Выводы.
Мобильные приложения, разработанные на платформе 1С, работают с базой данных с такой же скоростью, что и приложения, разработанные на архитектуре от Google, если учитывать и понимать специфику работы обеих этих платформ.
Регистр сведений схож по своей сути с записями ORM Room, скорость записи и чтения по индексированным полям у них одинаковы (расхождения на уровне статистической погрешности).
Запись справочника 1С на 25 % медленнее, чем запись объекта в Room, по всей видимости, это связано с тем, что справочник 1С – это объект специализированного класса со своими дополнительными особенностями.