我正在使用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++){ ............... } } }
答案 0 :(得分:1)
首先,如果您对性能感兴趣,请不要使用DOM。 Java中的其他树模型(例如XOM)更快,更容易用作奖励。
其次,具有5个嵌套循环的代码不是O(n ^ 5)。最内层循环的迭代总数等于文档中的节点数,因此它是文档大小的O(n)。