Java 中的 XML: 数据绑定,第 2 部分:性能
2010-04-01 00:00:00 来源:WEB开发网所有测试结果都是使用 1.4GHz Athlon 系统(拥有 256MB DDR RAM,运行 RedHat Linux 7.2)获得的。在所有测试中,我都使用了 Sun 的 JDK 1.4.1 for Linux。所测试的每个数据绑定框架的特定版本如下:JAXB Beta 1、Castor 0.9.4.1、JBind 1.0 Beta 12/07、Quick 4.3.1 和 Zeus Beta 3.5。除了 JBind 和 JiBX 之外,所有测试都使用了 Piccolo SAX2 解析器 V1.0.3。这是我知道的最快的 SAX2 解析器,它通常可以达到或超出用于 JiBX 测试的 XMLPull 解析器(XPP3 V1.1.2)的速度。JBind 无法使用 Piccolo 解析器,因此为测试 JBind,我使用了 Xerces Java 2 V2.2.0。
为了提供数据绑定和其它备用方法之间的性能比较,我还只使用 SAX2 解析器对相同文件运行了计时测试,并且使用 dom4j 文档模型(文档模型中的性能佼佼者,它允许使用不同的 SAX2 解析器解析输入文档)运行了计时和内存测试。对于这些测试,我使用了 dom4j V1.3。
在这些计时和内存使用量测试中,我使用的基本框架与以前的文档模型测试中所用的相同。这个基准测试框架首先将所有文档读入内存缓冲区,然后对针对文档的输入和输出操作的多次传递进行计时。 输入计时和 输出计时中显示的测试结果是数次传递过程中的最佳计时。这应当代表了服务器类型的环境(其中重复执行相同的代码)中的长期性能。
输入计时
图 1和 2显示了使用 dom4j 文档模型和各种数据绑定方法读取 XML 文档(就数据绑定而言,就是对其进行数据分解)以及构造内存中表示的计时结果。在这些图表中,您可以将第一个 SAX2 计时值作为解析文档的基本时间。文档模型和数据绑定实现使用该解析结果来构建其在内存中的表示,因此它们决不会比解析器本身快。标有说明的两个数据绑定测试基于映射而不是代码生成。
更多精彩
赞助商链接