【问题标题】:Is there any value in creating a pool of Dom4J SaxReader objects?创建 Dom4J SaxReader 对象池有什么价值吗?
【发布时间】:2010-10-07 13:51:03
【问题描述】:

我正在使用 Dom4J 1.4.2。

现在我的代码在每次我想解析一个新的 XML 文档时都会创建一个新的 SaxReader:

SAXReader reader = new SAXReader(  );

创建一个 SaxReader 对象池并重用它们有什么价值吗?每次调用创建一个新的 SaxReader 需要多少开销?

我的代码可以从池中获取一个,解析文档然后将其返回到池中以供另一个线程使用。

【问题讨论】:

    标签: java xml dom4j


    【解决方案1】:

    与所有所谓的性能问题和池对象的冲动一样:您是否遇到了实际问题,或者您是否试图在这里过早地进行优化?至少从 2005 年开始,在 Java 中滚动您自己的池就一直是 out of fashion

    我偷看了SAXReader的源码,这是构造函数:

      138       public SAXReader() {
      139       }
    

    没有实例初始化器,真正的工作是在read 方法中完成的。

    【讨论】:

    • 虽然在优化代码之前进行适当的分析是正确的方法,但您对 SAXReader 创建成本的评估是错误的并且具有误导性。创建 SAXReader 很可能是一项代价高昂的操作。构造函数只是空的,因为如果私有 XMLReader 字段为空,则在 read() 方法中初始化读取器。创建此 XMLReader 实例可能会导致类路径扫描!另请参阅:ibm.com/developerworks/library/x-perfap2.html/#reuse
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2021-11-04
    • 2013-04-13
    • 2019-03-10
    相关资源
    最近更新 更多