Java 中的 XML: 数据绑定,第 2 部分:性能 - 面向对象网,web开发,xml,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > Web开发 > Xml > 正文

Java 中的 XML: 数据绑定,第 2 部分:性能

来源: www.bianceng.cn 阅读:

第 1 部分介绍了有关为什么您希望对 XML 使用数据绑定的背景知识,还概述 了可用于数据绑定的 Java 框架。如果您尚未阅读 第 1 部分,那么现在您也许 至少应该浏览一下那篇文章。在本部分中,我将直接讨论性能问题,而不会进一 步讨论原因和方法!

性能测试

为了对数据绑定框架进行性能测试,我生成了包含模拟的航班时刻表信息的文 档。这些文档的结构与我在较早的有关利用 Castor 进行映射数据绑定的文章中 定义的结构相同。下面是该结构的样本,之所以称其为 紧凑格式是因为它主要对 数据使用了属性:

清单 1. 紧凑的文档格式

<?xml version="1.0"?>
<timetable>
<carrier ident="AR" rating="9">
<URL>http://www.arcticairlines.com</URL>
<name>Arctic Airlines</name>
</carrier>
<carrier ident="CA" rating="7">
<URL>http://www.combinedlines.com</URL>
<name>Combined Airlines</name>
</carrier>
<airport ident="SEA">
<location>Seattle, WA</location>
<name>Seattle-Tacoma International
Airport</name>
</airport>
<airport ident="LAX">
<location>Los Angeles, CA</location>
<name>Los Angeles International
Airport</name>
</airport>
<route from="SEA" to="LAX">
<flight carrier="AR" depart="6:23a"
arrive="8:42a" number="426"/>
<flight carrier="CA" depart="8:10a"
arrive="10:52a" number="833"/>
<flight carrier="AR" depart="9:00a"
arrive="11:36a" number="433"/>
</route>
<route from="LAX" to="SEA">
<flight carrier="CA" depart="7:45a"
arrive="10:20a" number="311"/>
<flight carrier="AR" depart="9:27a"
arrive="12:04p" number="593"/>
<flight carrier="AR" depart="12:30p"
arrive="3:07p" number="102"/>
</route>
</timetable>

注: 清单 1中的机场名称信息通常是一行代码。为了适应列大小,一些代码 行被拆开,出现在两行上。

除了紧凑格式外,我还尝试了一个变体,它的数据值更多地使用了子元素(只 对 ID 和 IDREF 继续使用属性)。下面是用在此被称为 完整格式的格式表示的 同一个数据:

清单 2. 完整的文档格式

<?xml version="1.0"?>
<timetable>
<carrier ident="AR">
<rating>9</rating>
<URL>http://www.arcticairlines.com</URL>
<name>Arctic Airlines</name>
</carrier>
<carrier ident="CA">
<rating>7</rating>
<URL>http://www.combinedlines.com</URL>
<name>Combined Airlines</name>
</carrier>
<airport ident="SEA">
<location>Seattle, WA</location>
<name>Seattle-Tacoma International Airport</name>
</airport>
<airport ident="LAX">
<location>Los Angeles, CA</location>
<name>Los Angeles International Airport</name>
</airport>
<route from="SEA" to="LAX">
<flight carrier="AR">
<number>426</number>
<depart>6:23a</depart>
<arrive>8:42a</arrive>
</flight>
<flight carrier="CA">
<number>833</number>
<depart>8:10a</depart>
<arrive>10:52a</arrive>
</flight>
<flight carrier="AR">
<number>433</number>
<depart>9:00a</depart>
<arrive>11:36a</arrive>
</flight>
</route>
<route from="LAX" to="SEA">
<flight carrier="CA">
<number>311</number>
<depart>7:45a</depart>
<arrive>10:20a</arrive>
</flight>
<flight carrier="AR">
<number>593</number>
<depart>9:27a</depart>
<arrive>12:04p</arrive>
</flight>
<flight carrier="AR">
<number>102</number>
<depart>12:30p</depart>
<arrive>3:07p</arrive>
</flight>
</route>
</timetable>

通常,根据所用文档的大小不同,XML 框架的相对性能会有巨大差异,因此在 这些性能测试中,我同时包含了大文档和小文档。大文档( time-comp.xml和 time-full.xml)使用相同的数据值(分别以如上所示的两种不同格式表示)。因 此大小明显不同(紧凑格式的为 106 KB,而完整格式的为 211 KB)。小文档都 在集合中,每个集合包含 34 个文档,紧凑格式( ttcomp)的大小从 1.4-3.3 KB 不等,完整格式( ttfull)的大小从 2.2-5.8 KB 不等。与大文档一样,小 文档集合中的相应文档包含相同的数据值。可以从下载页面获得测试中使用的完 整文档集。

Tags:
相关文章列表: