0

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

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

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

我相信分而治之的算法可能适用于这种情况。

你们有什么建议可以让代码更优化以获得更好的性能吗?

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

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

      }
   }
4

1 回答 1

1

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

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

于 2013-06-18T15:32:43.160 回答