以最低的复杂性循环XML

以最低的复杂性循环XML,xml,parsing,loops,complexity-theory,Xml,Parsing,Loops,Complexity Theory,我正在使用JavaDOM解析器解析XML文件。性能对我来说很重要,我需要编写最优化的代码。我注意到要处理的XML有很多嵌套标记(它可以达到5个深度级别),我必须检索所有级别的信息 我实现的虚拟解决方案是使用嵌套循环,每个循环检索节点的子循环并将其传递给下一个循环 当代码复杂度达到O(n^5)时,在性能和复杂度方面,这是一种非常糟糕的做法。请在下面的代码级别找到它的运行方式 我相信分治算法在这种情况下可能会起作用 你们有没有人建议使用更优化的代码以获得更好的性能 对于(int-temp=0;tem

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

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

当代码复杂度达到O(n^5)时,在性能和复杂度方面,这是一种非常糟糕的做法。请在下面的代码级别找到它的运行方式

我相信分治算法在这种情况下可能会起作用

你们有没有人建议使用更优化的代码以获得更好的性能

对于(int-temp=0;temp
for(int temp2=0;temp

首先,如果您对性能感兴趣,请不要使用DOM。Java中的其他树模型,如XOM,速度更快,更易于使用


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

Michael,非常感谢您的输入。我将尝试使用XOM。您认为有这样的嵌套循环不会影响性能吗。你知道有什么更好的做法有相同的输出吗?嗯,我会把它写在XSLT或XQuery中,并且只考虑其他方法,如果性能不符合要求。一般来说,如果性能不够快,那么最便宜的改进方法就是升级硬件——一台新服务器的成本大约相当于程序员一天的时间。
      for (int temp2 = 0; temp < detail2.getLength(); temp2++){
      .........
          for (int temp3 = 0; temp < detail3.getLength(); temp3++){
              ...............
          }

      }
   }