数据库访问与本地文件访问实测报告

转载 2004年09月14日 17:45:00
 

一直认为数据库访问比本地文件访问是要慢很多的,但究竟慢多少却不清楚。终于忍不住作了下比较测试。

测试环境:OS---Windows 2000 Server        DatabaseServer----SQLServer 2000        程序语言:CSharp

测试方式:从数据库中读取参数表/从XML中读取配置参数等同数量的记录并实例化对象。

测试程序如下:

 using System;
 using System.Globalization;
 using System.IO;
 using System.Xml.Serialization;
 using System.Xml;
 using System.Data;
 using System.Data.SqlClient;

 public class Demo
 {
  public static void Main()
  {
   System.Console.WriteLine("===== ExecuteXML() =====================================");
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine(ExecuteXML());
   System.Console.WriteLine("========================================================");
   
   System.Console.WriteLine("===== ExecuteSQL() =====================================");
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine(ExecuteSQL());
   System.Console.WriteLine("========================================================/n");

  }

  static double ExecuteSQL()
  {
   string _connString = "server=data-server;user id=sa;password=1234;database=LeadDB;min pool size=4;max pool size=4;packet size=3072";
   SqlCommand cmd = new SqlCommand();
   SqlConnection conn = new SqlConnection(_connString);

   double begin = CultureInfo.InvariantCulture.Calendar.GetMilliseconds(DateTime.Now);
   try {
    conn.Open();

    cmd.Connection = conn;
    cmd.CommandText = "SELECT [CategoryId], [Name] FROM [SYS_Category] WHERE [CategoryType] = 2";

    cmd.CommandType = CommandType.Text;
    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    while (rdr.Read())
    {
     new Entity(rdr.GetInt32(0), rdr.GetString(1));
    }
    rdr.Close();
   }catch {
    conn.Close();
    throw;
   }
   begin = CultureInfo.InvariantCulture.Calendar.GetMilliseconds(DateTime.Now) - begin;
   return (begin >= 0)?begin:begin+1000.0;
  }

  static double ExecuteXML()
  {
   double begin = CultureInfo.InvariantCulture.Calendar.GetMilliseconds(DateTime.Now);
   XmlDocument xmlDoc = new XmlDocument();
   xmlDoc.Load( @"F:/LeadBridge/XCERP/Web/OnlineService/SYS_Category_Headship.xml" );
   
   foreach(XmlNode node in xmlDoc.SelectNodes("items/item")){
    new Entity(int.Parse(node.Attributes["id"].Value), node.InnerText);
   }
   begin = CultureInfo.InvariantCulture.Calendar.GetMilliseconds(DateTime.Now) - begin;
   return (begin >= 0)?begin:begin+1000.0;
  }
 }

 public class Entity {
  public Entity(int age, string name){
   this._Age = age;
   this._Name = name;
  }
  private int _Age;
  private string _Name;
  public int Age{
   get{ return _Age; }
   set{ _Age = value; }
  }
  public string Name{
   get{ return _Name; }
   set{ _Name = value; }
  }
 }

执行结果如下:

===== ExecuteXML() =====================================
47
0
0
16
0
0
0
0
16
0
========================================================
===== ExecuteSQL() =====================================
203
0
0
0
0
0
16
0
0
0
========================================================

做过多次测试,基本上是如上数量级别(一个数量级)的差异(第一次执行差异),因此建议,大家对于无需经常修改的数据保存为本地参数文件形式比直接从数库读取效率要高一些。

数据库访问与本地文件访问实测报告

一直认为数据库访问比本地文件访问是要慢很多的,但究竟慢多少却不清楚。终于忍不住作了下比较测试。测试环境:OS---Windows 2000 Server        DatabaseServer--...
  • zlyperson
  • zlyperson
  • 2004年09月10日 21:18
  • 750

一份闪闪发光的实测报告!

“ 这是一份闪闪发光的实测报告!来自于一群专业的近乎偏执的“搞机人”!这是一个被称为“三位一体”新型全闪存存储系统!自动分层存储功能、精简快照、无损性能的数据压缩与重复数据消除…全闪存时代已经到来,越...
  • M7720EIoSi6oA9
  • M7720EIoSi6oA9
  • 2018年01月04日 00:00
  • 122

房屋面积实测表

一、基本概念房屋实测面积是指商品房竣工验收后,工程规划相关主管部门审核合格,开发商依据国家规定委托具有测绘资质的房屋测绘机构参考图纸、预测数据及国家测绘规范之规定对楼宇进行实地勘测、绘图、计算而得出的...
  • DSLZTX
  • DSLZTX
  • 2016年04月09日 19:13
  • 1656

HTML5+Canvas手机拍摄,本地压缩上传图片,案例实测报告。

做了个微信的HTML5拍摄上传照片功能,问题重重...   前端代码 01 $(':file').on('change',function(){ ...
  • wang_quan_li
  • wang_quan_li
  • 2014年04月04日 22:07
  • 1990

C#与数据库访问技术总结(一)之体系结构

ADO.NET(ActiveX Data Object.NET)是Microsoft公司开发的用于数据库连接的一套组件模型,是ADO的升级版本。     程序员能使用ADO.NET组件模型,方便高效...
  • lzm18064126848
  • lzm18064126848
  • 2016年12月07日 14:02
  • 1360

WebService学习总结 三 利用本地wsdl文档生成客户端代码和TCP/IP工具监听请求

一 利用本地文档生成客户端代码: 之前都是利用网络上的wsdl文档生成客户端代码,现状可以先访问网络上的wsdl文档,再把文档保存到本地,使用 wsimport -keep 本地wsdl文档路径,来生...
  • liangwenmail
  • liangwenmail
  • 2016年07月03日 08:53
  • 1316

iOS Android BLE传输速度和蓝牙模块实测(进行中...)

iOS Android BLE传输速度和蓝牙模块实测(进行中...)
  • huanghr_1
  • huanghr_1
  • 2017年05月26日 10:32
  • 682

操作系统访问文件的方式

访问文件的方式访问文件的方式 标准访问文件方式 直接IO方式 同步访问文件方式 异步访问文件方式 内存映射方式 读取和写入文件IO操作都需要调用操作系统提供的接口,读和写分别对应read和write...
  • a101070096
  • a101070096
  • 2016年05月10日 20:14
  • 1545

关于FPGA设计仿真和硬件实测不一致问题的讨论

总结了一下本人项目中遇到的类似问题, 大家如果遇到可以从以下方面着手检查bug. 1.寄存器未给初值; 一个良好的习惯就是每个寄存器变量都要在reset里面预先定义初值. 看下面一个例子: ...
  • fsFengQingYangheihei
  • fsFengQingYangheihei
  • 2016年07月13日 12:29
  • 874

ext2/ext3档案的存取与日志式文件系统功能

如何是新建一个档案或者目录时,我们的ext2是如何处理的呢?这个时候就要block bitmap以及inode bitmap的帮忙了。假设我们新增一个档案,此时文件系统的行为是: 先确定用户对于欲新增...
  • JiangJunDriver
  • JiangJunDriver
  • 2017年05月04日 19:15
  • 208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库访问与本地文件访问实测报告
举报原因:
原因补充:

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