循环XML具有最低的复杂性

时间:2013-06-18 14:31:32

标签: xml parsing loops complexity-theory

我正在使用Java DOM解析器来解析XML文件。性能对我很重要,我需要编写最优化的代码。我注意到要处理的XML有很多嵌套标签(它可以达到5个级别),我必须检索所有级别的信息。

我实现的虚拟解决方案是嵌套循环,每个循环检索节点的子节点并将其传递给下一个循环。

随着代码复杂度达到O(n ^ 5),这在性能和复杂性方面是一种非常糟糕的做法。请查看下面的代码级别。

我相信在这种情况下,分而治之的算法可能会起作用。

您是否有任何建议要求更优化的代码以获得更好的性能?

  

for(int temp = 0; temp< contractDetails.getLength(); temp ++){             节点详细信息= contractDetails.item(temp);             的System.out.println(detail.getNodeName());             NodeList detail2 = detail.getChildNodes();

      for (int temp2 = 0; temp < detail2.getLength(); temp2++){
      .........
          for (int temp3 = 0; temp < detail3.getLength(); temp3++){
              ...............
          }

      }
   }

1 个答案:

答案 0 :(得分:1)

首先,如果您对性能感兴趣,请不要使用DOM。 Java中的其他树模型(例如XOM)更快,更容易用作奖励。

其次,具有5个嵌套循环的代码不是O(n ^ 5)。最内层循环的迭代总数等于文档中的节点数,因此它是文档大小的O(n)。