想在开发中使用nhibernate,但担心在性能上的问题,对查询的速度和ado.net进行了一下简单的比较。过程和代码如下描述,由于了解不深,暂不做结论,希望大家给点意见。
nhibernate hql方式 : 830 条记录, 加载时间(ms) : 3334.7952 绑定ilist时间(ms) : 70.1008
ado.net dbdataadapter方式 : 830 条记录; 加载时间(ms) : 40.0576 绑定ilist时间(ms) : 80.1152
测试环境:winform方式,数据库也在本机
硬件:cpu -- 1.2g amd duron(tm) ram -- 384m ddr266
软件:windows server 2003, sql server 2000,visual studio.net 2005
测试代码下载http://www.cnblogs.com/files/liuyuanhuo/nhibernatetest_performance.rar
测试的代码是在
子非鱼 nhibernate学习 http://sifang2004.cnblogs.com/archive/2005/09/05/230713.aspx
nhibernate 博客园专题之一 http://www.cnblogs.com/files/sifang2004/nhibernatetest.rar
中下载的示例中作修改的。
测试由两个工程组成,
一.nhibernatetest工程,仅修改两个地方
1.注释order.hbm.xml中_items相关的<bag元素
2.在order.cs增加下面两个方法
/**//// <summary>
/// 使用nhibernate hql方式查询
/// </summary>
/// <returns>ilist,订单对象集合</returns>
public ilist loadallbynhibernate()
{
ilist orders = objectloader.find( " from order ", null);
return orders;
}
/**//// <summary>
/// 使用ado.net dbdataadapter方式查询
/// </summary>
/// <returns>datatable,订单数据表</returns>
public datatable loadallbyad.net()
{
datatable dtorders = new datatable();
dbconnection dbconnection = new sqlconnection();
dbconnection.connectionstring =
@"server=andy\andy;initial catalog=northwind;user id =sa;password=sa";
dbcommand dbcommand = new sqlcommand();
dbcommand.connection = dbconnection;
dbcommand.commandtype = commandtype.text;
dbcommand.commandtext = "select * from orders";
dbdataadapter dataadapter = new sqldataadapter();
dataadapter.selectcommand = dbcommand;
dataadapter.fill( dtorders );
return dtorders;
}
二.添加一个nhibernatetestui工程,引用nhibernatetest,从nhibernatetest复制一份app.config到nhibernatetestui,修改连接串,然后添加一个窗体类,加了两个按钮一个datagridview, 两个按钮分别测试ado.net dbdataadapter方式和nhibernate hql方式的加载时间,测试代码如下:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器