【问题标题】:Android JSON performance issueAndroid JSON 性能问题
【发布时间】:2013-12-25 15:33:29
【问题描述】:

我在将 JSON 字符串解析回 java 对象时遇到性能问题。 这是代码:

public List<BusinessObject> transferToDomain(String pJSON) {
        List<BusinessObject> lAllBusinessObject = new ArrayList<BusinessObject>();
        if (null == pJSON || pJSON.equals("")){
            return lAllBusinessObject;
        }
        JSON lJSON = JSONSerializer.toJSON(pJSON); <-- LONG RUNTIME HERE!
        if (lJSON.isEmpty()) {
            return lAllBusinessObject;
        } else {
            if (lJSON.isArray()) {
                JSONArray lJSONArray = (JSONArray) lJSON;
                for (Object lObject : lJSONArray) {
                    JSONObject lJSONObject = (JSONObject) lObject;
                    lAllBusinessObject.add(doTransfer(lJSONObject));
                }
            } else {
                JSONObject json = (JSONObject) lJSON;
                BusinessObject lBusinessObject = doTransfer(json);
                if (null != lBusinessObject) {
                    lAllBusinessObject.add(lBusinessObject);
                }
            }
        }
        return lAllBusinessObject;
    }

如果我使用 200 个测试对象(在 pJSON 中)运行我的测试方法,整个操作将在不到 2 秒的时间内完成。 如果我在Android 模拟器中运行相同的方法并从我的服务器接收到 200 个对象,那么整个操作需要超过 4 分钟!!!

和那行代码有关:

JSON lJSON = JSONSerializer.toJSON(pJSON);

但我不明白为什么我的JUnit 方法很快,而模拟器执行该方法真的很慢?

我正在使用json-lib-2.4-jdk15.jar

需要一些建议。

提前致谢

斯蒂芬

【问题讨论】:

  • 您是否尝试在 HAXM (Intel Atom x86) 模拟器实例或手机/平板电脑上运行它?
  • 来自设备管理器:CPU/ABI = ARM (armeabi-v7a)
  • 尝试将 HAXM 与 Intel Atom x86 结合使用...应该会更快,如果这里确实存在问题,可以让您更好地了解

标签: java android json performance


【解决方案1】:

我找到了性能缓慢的原因。 如果我不在调试模式下运行应用程序,性能真的很快(

【讨论】:

  • 我还看到调试版本与发布版本相比,json 解析时间长了大约 16 倍。这是在 Galaxy Tab 4 上使用 stock json 库。
【解决方案2】:

为什么不使用 Jackson 库。与 Gson 或其他相比,它具有最快的 json 解析能力。它具有所有功能,json 到类 obj,obj 到 json。使用 Jackson 并测试您的表现。

【讨论】:

  • 更改库是一种解决方案,但我想知道为什么模拟器需要 4 分钟来将 json 字符串解析为对象而我的 junit 需要 2 秒...
  • 这需要时间,因为它取决于网络可访问性、处理器速度、内存容量等。因此需要很长时间。
  • 没有。 IMO 解析 json 字符串应该在几秒钟内完成。特别是我的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多