【问题标题】:Looping XML with the lowest complexity以最低复杂度循环 XML
【发布时间】:2013-06-18 14:31:32
【问题描述】:

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

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

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

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

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

for (int temp = 0; temp

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

      }
   }

【问题讨论】:

    标签: xml parsing loops complexity-theory


    【解决方案1】:

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

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

    【讨论】:

    • 迈克尔,非常感谢您的意见。我会尝试使用 XOM。您是否相信拥有这样的嵌套循环不会影响性能。你知道有什么更好的做法来获得相同的输出吗?
    • 好吧,我会用 XSLT 或 XQuery 来写,只有在性能不符合要求的情况下才考虑其他方法。一般来说,如果性能不够快,那么改进它最便宜的方法是升级硬件——一台新服务器的成本大约是程序员一天的时间。
    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多