参考:

http://www.ibm.com/developerworks/cn/xml/x-xercesperf/

Xerces-C++ 初始化

根据 Xerces-C++ 线程模型,主线程调用 XMLPlatformUtils::Initialize()。然后您可以创建其他用于解析的线程(每个线程创建一个解析器)。最后主线程调用 XMLPlatformUtils::Terminate()

XMLPlatformUtils::Initialize() 是一个开销较大的操作。即使不使用多线程处理,也要预先初始化 Xerces-C++ 以避免多次调用这个函数,然后在应用程序结束时将其终止。如 清单 8 所示,将 XMLPlatformUtils::Initialize 的最后一个参数 toInitStatics 指定为 true,将使初始化过程变得更长,但它能产生更好的解析性能,因为它预先初始化了所有静态变量。


清单 8. 通过初始化调用实现所有静态变量的初始化

                
#include <xercesc/util/PlatformUtils.hpp>
				
XMLPlatformUtils::Initalize(XMLUni::fgXercescDefaultLocale, 0, 0, 0, true);   

 

类似地,在初始化期间可以创建一个解析器池(每个线程创建一个)。当需要解析文档时,可以在运行时使用这些解析器,从而避免构造和分解解析器的开销。