xml与access数据读取对比测试

    前一段时间写了一个用xml作为数据储存方式的站点,感觉速度很慢。经过测试发现,原来大量的时间用来处理在网络上的dtd文件了。进而又对xml数据读取的性能进行了进一步的测试。

    测试分为3种类型,分别是读取单条数据、读取前n条数据、读取n到m条数据的测试。这些都是网站最基本的取数据的方式。对5种类型的数据进行测试,分别为dtd在网络上的xml(本机web服务器)、dtd在文件系统中的xml、不包含dtd的xml、sql server 2000、access。

    测试数据
    xml的数据结构如以下dtd所描述:
<?xml version="1.0" encoding="gb2312" ?>
<!--产品-->
<!ELEMENT product ( class, intro, image, price, content ) >
<!--
id 产品唯一标志
name 产品名称
-->
<!ATTLIST product id ID #REQUIRED
    name CDATA #REQUIRED >

<!--产品类别-->
<!ELEMENT class ( #PCDATA ) >

<!--介绍-->
<!ELEMENT intro ( #PCDATA ) >

<!--产品图片-->
<!ELEMENT image ( #PCDATA ) >

<!--产品单价-->
<!ELEMENT price ( #PCDATA ) >

<!--产品详细介绍-->
<!ELEMENT content ( #PCDATA ) >
    测试使用DOM模型读取xml,当读取多条记录时先列出所有xml文件,然后再选择一部分构造DOM对象,代码如下:
    XmlDocument [] docs = new XmlDocument[ loop ];
    string [] files = Directory.GetFiles( @"D:/Temp/XmlLoadTester/TestData/public" );
    int end = start + num;
    for( int j = start; j < end; j ++ )
    {
     XmlDocument xml = new XmlDocument();
     xml.Load( files[j] );
     docs[j] = xml;
    }
    每一组测试数据都包含77个xml文件。

    sql server与access使用的数据表为sql server自带的nothwind数据库中的products表(其中access中的表结构及数据均为sql server导出)。分别使用SqlClient和OleDb进行数据库连接,使用DataApater将数据填充到DataTable中。取出n条数据的时候使用的是sql语句中的top n,取出n到m条记录的时候使用的是如下sql语句:
"select top " + (m-n) + " * from products where productid not in ( select top " + n + " productid from products order by productid ) order by productid"
    数据表中有77条记录。

    测试环境
    硬件:amd Sempron 2800+(超频到1.9GHZ),onda N61G,512M ddr 400,7200prm 40g pata
    软件:windows 2003 server, sql server 2000, iis6.0, .net framework 1.1

    测试结果
    下表是这次测试的结果(单位:秒):

 

连续读取一条记录1000

读取15条记录100

读取15条记录1000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值