通过GWT中的JSONArray缓慢迭代

时间:2011-08-25 14:21:45

标签: java performance json gwt

我正在使用GWT来构建一个应用程序,而我正面临着一些我认为非常快的问题。我有一个JSONObject,其数据采用以下结构(但要大得多):

{"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循环花了大约一分钟,这似乎太长了,我不知道如何改进它。分钟处于开发模式,但我不知道编译时它是否会更快。

3 个答案:

答案 0 :(得分:3)

您是否尝试过使用叠加层?

GWT Coding Basics - JavaScript Overlay Types

您可以非常轻松地创建叠加类型: -

// An overlay type
class Customer extends JavaScriptObject {

  // Overlay types always have protected, zero-arg ctors
  protected Customer() { }

  // Typically, methods on overlay types are JSNI
  public final native String getFirstName() /*-{ return this.FirstName; }-*/;
  public final native String getLastName()  /*-{ return this.LastName;  }-*/;

  // Note, though, that methods aren't required to be JSNI
  public final String getFullName() {
    return getFirstName() + " " + getLastName();
  }
}

非常容易使用,我认为比使用JSONObject对象要快得多。

答案 1 :(得分:0)

你如何使用GWT?在IDE里面? 根据我的经验,有太多的断点会减慢执行流程,你可以检查一下吗? 特别是当我在生产中看到它似乎很好......

答案 2 :(得分:0)

如果其他一切都失败了,你总是可以在原生Javascript中编写它并通过JSNI调用它。