我有以下 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 第一代手机并进行一些性能测试(仍然是一款非常不错的手机)。每个插入的 PlannedTaskDao 对象的平均插入时间约为 60 毫秒。数据库是空的,所以它不是更新。我在 1 个事务中对 1000 个对象的循环执行了此操作。
要将这些对象的 json 字符串从 Web 服务响应解析为 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 有这样的性能是正常的吗?我可以做些什么来提高性能以减少插入领域的时间?我没有使用最新版本,在最新版本的领域 java 中是否有任何重大改进来改进这一点?