我正在使用GWT构建应用程序,而且我正面临着我认为速度非常快的严重速度问题。我有下面的结构数据的JSONObject(但大得多):通过GWT中的JSONArray缓慢迭代
{"nodeData" : [
{ "name":"one", "attributes":["uno","dos"]},
{"name":"two", "attributes":["tres"]}
]
}
我试图通过JSON对象进行迭代来存储所有属性在其中每个节点对象都有一个ArrayList,具有属性大小从4到800
JSONObject JSONnode = nodeData.get(i).isObject();
Node node = new Node(JSONnode.get("name").toString();
JSONArray attributeArray = JSONnode.get("Attributes").isArray();
int attributeSize = attributeArray.size();
for(int j = 0; k < attributeSize; j++){
node.attributeArrayList.add(attributeArray.get(j).toString();
}
for循环,我执行走约一分钟,这似乎太长了,我不知道如何改进它。一分钟处于开发模式,但我不知道编译它时会不会更快。
解析JSON结构的方式很好。对于大约800条记录,一分钟听起来有点多。不过,我可以保证在生产模式下性能良好(您应该尝试使用它)。出于测试目的,您可以删除node.attributeArrayList.add()调用并查看它是否会影响性能。顺便说一句你在开发模式中使用哪种浏览器? –
我不使用生产模式的原因是因为我在异步调用中遇到404错误。由于我没有在开发模式中获得404,我只是一直使用它。我寻找答案表明它可能是一个SOP问题,所以我有点推动把它固定在一边。 – aelnaiem
404与SOP无关(因为404意味着服务器已到达)。然而,很可能你使用的是绝对路径,因为web应用程序部署在服务器的ROOT处,所以绝对路径工作在开发模式下,但不能在prod模式下使用非空的“上下文路径”。最有可能的解决办法是将您的路径连接到'GWT.getHostPageBaseURL()',因此它与您的主机页面“相对”,无论它在哪里部署。 –