xml与access数据读取对比测试

原创 2006年06月13日 14:00:00

    前一段时间写了一个用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

读取401000

读取30条到45条记录1000

读取60条到75条记录1000

dtd在网络中的xml

11.734

22.015

193.515

469.984

179.406

同左

dtd在文件系统中的xml

4.125

7.968

79

187.968

74.437

同左

不包含dtd的xml

0.953

3.125

31.312

52

29.609

同左

SqlServer

1.187

0.125

1.406

1.781

1.312

1.359

Accesss

37.250

3.781

37..406

48.265

51.125

1:03.328

    从测试结果来看,处理dtd会对性能产生严重影响。不过不包含dtd的xml的性能明显已经超过access。使用xml在中小型站点上替代access是完全可行的。

    测试中的一些问题
    1.cpu占用率:读取xml的时候cpu占用率一直为100%。sql server的cpu占用率也很高,不过很快数据读取就结束了。access是cpu占用率最低的,最复杂的操作也不会达到30%。如果从cpu效率来说的话,xml恐怕是最低的了。
    2.dtd缓存:在读取dtd在网络中的xml时,cpu占用率一直不稳定,如下图所示:
   
    我觉得可能是.net对dtd有缓存,过一段时间后缓存就失效了,然后再到网络上取一次dtd。
    3.获取文件列表的问题:因为担心数据条数多的时候列出文件列表会另性能降低,所以额外对列出文件作了测试,测试代码如下:
   for( int i = 0; i < 1000; i++ )
   {
    string [] files = Directory.GetFiles( dir );
   }  
    奇怪的是当dir是包含xml数据的文件夹时(含77个文件),这段代码运行了19秒,而列出c:/window/system32目录下的文件时(2500+个文件)时,只用了12秒多一点。难道是windows对这个文件夹作优化了,还是别的原因?我又将xml数据复制到一个新建文件夹中,复制了837份,结果列出这个文件夹的文件也只用了12.9秒。难道文件越多列出的时间用的越少?不过至少证明了在文件很多的情况下用xml的性能也不会降低很多。

数据库和XML数据读取性能比较。

数据库和XML数据读取性能比较。硬件:CPU P4赛扬2.2G,内存512M操作系统:Windows XP SP2数据库:Access2002软件环境:JDK1.4,Eclipse3.01      ...
  • feifeile
  • feifeile
  • 2006年06月04日 23:00
  • 1419

MFC edit控件实现自动换行

必须设置Vertical Scrollbar = TRUE 必须设置MultiLine = TRUE 必须设置Horizontal Scrollbar = FALSE 必须设置Auto HScr...
  • a200638012
  • a200638012
  • 2016年07月08日 17:22
  • 4789

设置MFC Edit control可以换行显示

MFC Edit control可以换行显示 1.设置edit control 属性Multiline为true 2.写入数据时,想换行的时候写入"\r\n"即可,CString str.Re...
  • a780902723
  • a780902723
  • 2014年12月09日 16:52
  • 2469

MFC中EDIT控件实现换行

一、通过回车换行: 这里要有两个设置 .将控件的属性设置为Mutilines->true; .将控件的另一个属性设置为Want return->true. 水平和垂直滚动条设置...
  • dearwind153
  • dearwind153
  • 2015年12月09日 21:13
  • 3890

xml与access数据读取对比测试

    前一段时间写了一个用xml作为数据储存方式的站点,感觉速度很慢。经过测试发现,原来大量的时间用来处理在网络上的dtd文件了。进而又对xml数据读取的性能进行了进一步的测试。    测试分为3种...
  • lxfan
  • lxfan
  • 2006年06月13日 14:00
  • 3626

access数据库数据转换为xml文件

  • 2011年04月25日 14:28
  • 23KB
  • 下载

Access2010 数据库性能测试

access的规格中虽然没有限制一张表的最大数据条数,但是限制了一个.mdb文件和一张表的大小不能超过2GB。所以,在只有一个.mdb文件的条件下,是不能对一张表进行无限插入的。 作为一款桌面型数据...
  • Fly2Leo
  • Fly2Leo
  • 2013年08月28日 18:34
  • 1466

单元测试(1)--对xml进行对比

很多时候,我们的方法是在对xml文件进行操作。针对这些方法写单元测试用例时,便要去对xml去进行检查。 是否有一种工具,可以帮助我们,将方法执行后的xml文件,与我们的预期进行对比?答案是有的,这款...
  • lizeyang
  • lizeyang
  • 2013年05月03日 19:42
  • 1746

ASP.NET C# 访问Access、Xml等数据库

简介 目前主流的数据库是SQL2008 、SQL2012了等等,从一开始我们接触的也是这些RDMS数据库管理系统,似乎认为Access、SQL2000等已经没有什么用处,其实,它们用处也非常大...
  • lilongsheng1125
  • lilongsheng1125
  • 2013年04月12日 17:18
  • 2724

保存xml数据到数据库的程序实现

  保存xml数据到数据库的程序实现                     ---天楠  2005-11-24          数据库是现在使用非常普及的数据存储工具。由于技术的成熟,对于新兴的...
  • hantiannan
  • hantiannan
  • 2005年11月25日 16:20
  • 4030
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xml与access数据读取对比测试
举报原因:
原因补充:

(最多只允许输入30个字)