Для вставки области объекта JSON требуется 60 мс на объект
У меня есть следующий объект json: https://pastebin.com/B9Z1Wmqd
В настоящее время используется Realm 2.0.2
Мои соответствующие объекты (упрощенно) выглядят следующим образом, поэтому вы можете увидеть отображение:
Объект верхнего уровня:
public class PlannedTaskDao extends RealmObject {
@PrimaryKey
private Long tasks_id;
private Date date;
private Date lastUpdate;
private Long clients_id;
private String hour;
private String libelle;
private String comments;
private Boolean closed;
private int displayOrder;
private long executionTime;
private Long locations_status_id;
private boolean deleted;
private String locationName;
private RealmList<PlannedTaskGroupDao> tasks;
private RealmList<PlannedTaskUserDao> users;
private Long affected_users_id;
}
Подобъекты:
public class PlannedTaskGroupDao extends RealmObject {
private Long group_config_id;
private String libelle;
private RealmList<PlannedSubTaskDao> subtasks;
}
public class PlannedSubTaskDao extends RealmObject {
private Long tasks_id;
private String task_value;
private String libelle;
private String type; // status_value/status_only
private Long status_id;
private SiteDao site;
private Long controls_items_id = 0L;
private float weight;
private Long subtask_config_id;
}
public class PlannedTaskUserDao extends RealmObject {
private String config_user_id;
private Long chosen_user_id;
private String signature;
private boolean signed;
private String userName;
}
Я использую телефон Motog G 1st Gen и провожу некоторые тесты производительности (все еще очень приличный телефон). Среднее время вставки этого и подобных сложных объектов одного и того же типа составляет примерно 60 мс на каждый вставленный объект PlannedTaskDao. БД пуста, поэтому это не обновление. Я выполнил это в цикле из 1000 объектов в 1 транзакции.
Для анализа строки json этих объектов из ответа веб-службы в массив JSONArray требуется ~2 сек, чтобы получить порядок величины.
JSONArray jsonArray = getResFromWS(); // contains 1000 objects of similar complexity to the pastebin json object shown above
for (int i = 0 ; i < jsonArray.length(); i++) {
try {
// calculate start time here
RealmObject realmObj = realm.createOrUpdateObjectFromJson(clazz, jsonArray.getJSONObject(i));
// check insertion time here in ms since start time
// do post treatment to realmObj
linkObjects(realmObj);
} catch (Exception e){
e.printStackTrace();
}
}
Это, очевидно, означает, что для вставки 1000 объектов требуется примерно 1 минута.
Это нормально для realm/realm-java, чтобы иметь такую производительность? Что я могу сделать, чтобы улучшить производительность и сократить время вставки в область? Я не пользуюсь последней версией, были ли какие-либо большие достижения в последней версии Realm Java для улучшения этого?