zoukankan      html  css  js  c++  java
  • XPO读取效率测试

        这里是KaneBoyBlog上发表项目心得的一段话:

    这个项目我使用了DevExpressORM产品:XPO,它是一个可以完全对开发人员屏蔽数据库操作的透明持久层,而并非常见的在Entity与数据库Table之间定义映射关系后自动进行存取数据操作的ORM。这就意味着,在开发过程中,我可以完全不用去管建表、建字段、取数据之类的所有的数据库相关的操作。根据我的估计,它大约节约了我40%的写代码时间。我承认XPO有这样或者那样的缺点,但是,它最重要的优点,提高开发速度,完完全全的吸引了我。

    可以看出ORM的优势所在,我在我们的项目中花了点时间对XPO的读取速度做了个只能说初略的测试.

     

    我做的测试的数据库(SQL Server)服务器和工作机是分开的,在公司100M的局域网环境下工作.

    测试环境:

     

    硬件配置

    备注

    数据库服务器

    P4 2.4 /512M内存Windows 2003 Server

    塔式服务器

    工作计算机

    P4 1.8/512M内存 Windows XP

    笔记本电脑

     

    我用一张有42个字段的表,这个表和其他20多张表有关系映射(应该是比较有代表性了),在测试前我用循环语句(是用XPO)向数据库写了1万条记录,大概花了45分钟,但这不是我们测试的重点(一般很少有情况会一次写入那么多记录),最后我删除了97%的数据,留下来300条做读取测试,我把这些记录读取后放到一个DataGrid.

    测试结果:

    测试读取数据量

    起始环境

    用时

    (秒为单位,保留两位小数)

    备注

    读取1万条记录

    数据库之前已有读取,程序第一次启动

    17.68

     

    读取300条记录

    数据之前没有读取, 程序第一次启动

    2.34

     

    读取300条记录

    数据之前没有读取, 程序第一次启动

    2.56

     

    读取300条记录

    数据库之前已有读取,程序第一次启动

    1.19

     

    读取300条记录

    数据库之前已有读取,程序第一次启动

    1.48

     

    读取300条记录

    数据库之前已有读取,程序已经启动

    0.22

    在关闭测试窗口后(但没有推出测试程序),再次打开测试窗体

    读取300条记录

    数据库之前已有读取,程序已经启动

    0.18

     

     

    任务管理器进程管理的显示上看这个测试程序在读取记录前占用24M左右的内存,在读取300条记录后占用的内存在34M58M之间.就是关闭测试窗体,但不推出程序也要占那么多,这是因为XPO有个对象缓存池,有了这个缓存XPO的工作效率相当高,在实际使用的感觉中和DataSet差不多,但也不像XPO宣传的那样在某些情况下比DataSet还快,我个人认为DataSet的效率应该比XPO高那么一点点,但差别甚微是是主观感觉不出来的(我具体没有做个测试).

    从上面的结果可以看出读取数据所花费的时间和SQL Server的缓存有很大关系,当然和网络环境其他因素也有关.XPO的表现令我感到满意,现在可以大胆的用XPO做项目了.ORM框架的效率问题一直是人们争论的中心,我个人认为在项目要求不是很严格的情况(对数据实时性要求)下完全可以用XPO,这是成倍提高开发效率的好东西.

     

    :

    我测试用的代码:

    private void btnStart_Click(object sender, System.EventArgs e)
    {
                DateTime start
    =DateTime.Now;
                
    this.labStart.Text+=start.ToString();
                Manager dm
    =new Manager();//在实例化对象的时候构造函数用XPO读取300条记录
                this.dataGrid1.DataSource=dm.Drugs;//填充到DataGrid赋值
                DateTime end=DateTime.Now;
                
    this.labEnd.Text+=end.ToString();
                TimeSpan js
    =end-start;
                
    this.labTotal.Text+=js.TotalSeconds.ToString();
    }

  • 相关阅读:
    5-python基础—获取某个目录下的文件列表(适用于任何系统)
    Automated, Self-Service Provisioning of VMs Using HyperForm (Part 1) (使用HyperForm自动配置虚拟机(第1部分)
    CloudStack Support in Apache libcloud(Apache libcloud中对CloudStack支持)
    Deploying MicroProfile-Based Java Apps to Bluemix(将基于MicroProfile的Java应用程序部署到Bluemix)
    Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)
    Carve Your Laptop Into VMs Using Vagrant(使用Vagran把您笔记本电脑刻录成虚拟机)
    使用Python生成一张用于登陆验证的字符图片
    Jupyter notebook的安装方法
    Ubuntu16.04使用Anaconda5搭建TensorFlow使用环境 图文详细教程
    不同时区的换算
  • 原文地址:https://www.cnblogs.com/format/p/26419.html
Copyright © 2011-2022 走看看