【发布时间】: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