0

我有以下 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 中是否有任何重大改进来改进这一点?

4

0 回答 0