zoukankan      html  css  js  c++  java
  • 我的ORM之十三 -- 性能参数

    我的ORM索引

    测试环境

    台式机:

    主板:映泰Z77

    CPU:i5 3470(3.2GHz)

    内存:DDR3 1600 8G(单条)

    硬盘:创见 SSD 256G

    ORM从过程上,可以分两个大的部分:

    • 生成SQL
    • 把返回的数据(DataReader 或 DataSet)转换成 强类型的结果集

    生成SQL测试

    用比较复杂的查询(为了测试,查询生成的SQL不能执行,仅为了测试生成SQL的性能)

    public ActionResult TestGenSqlP()
    {
        Stopwatch sw = Stopwatch.StartNew();
        for (int i = 0; i < 10000; i++)
        {
            dbr.PUser
                .Select(o => new Columns(o.Id, o.Name.JoinStr()))
                .Join(dbr.Corporation, (a, b) => a.Id == b.Id)
                .Join(dbr.City, (a, b) => a.Id == b.Id)
                .Join(dbr.Annex, (a, b) => a.Id == b.Id)
                .Join(dbr.Bank, (a, b) => a.Id == b.Id)
                .Join(dbr.CorpUser, (a, b) => a.Id == b.UserID)
                .Join(dbr.Menu, (a, b) => a.Id == b.Id)
                .Where(o => o.Id > 0 & o.Name == "abc" & o.Logo > 0 & o.CreateAt.IsSameDay("2015-05-26".AsDateTime()))
                .OrderBy(o =>
                    dbo.CaseWhen(dbr.PUser.Id < 100, new ConstColumn(1))
                    .WhenThen(dbr.PUser.Id.Between(100, 200), new ConstColumn(2))
                    .ElseEnd(new ConstColumn(3))
                    .Asc)
                .AutoGroup()
                .ToCommand();
        }
    
        return Content(sw.ElapsedMilliseconds.ToString());
    }

    三次结果:(毫秒)

    5950

    5804

    5801

    平均每次生成SQL时间: 0.6毫秒

    数据对象化测试

    单条数据:

    public ActionResult TestToObjectP()
    {
        using (new MyOqlConfigScope(ReConfigEnum.SkipPower))
        {
            var menus = dbr.Menu.Select().ToMyOqlSet();
    
            Stopwatch sw = Stopwatch.StartNew();
            for (int i = 0; i < 10000; i++)
            {
                dbo.DictionaryToModel(menus.Rows[i % menus.Rows.Count], new MenuRule.Entity());
            }
    
            return Content(sw.ElapsedMilliseconds.ToString());
        }
    }

    三次结果:(毫秒)

    237

    229

    241

    强类型化一条数据,平均时间: 0.025毫秒

    强类型化单条和多条,底层是一样的。就不用测试了。

  • 相关阅读:
    基于Yarp的http内网穿透库HttpMouse
    Redis+Lua解决高并发场景抢购秒杀问题
    SQL慢查询排查思路
    webrtc之TURE、STUN、摄像头打开实战
    WebService就该这么学
    超详细 Java 15 新功能介绍
    Java 14 新功能介绍
    Java 17 将要发布,补一下 Java 13 中的新功能
    Java 8 Function 函数接口
    PO/DO/VO/DTO/BO/POJO概念与区别
  • 原文地址:https://www.cnblogs.com/newsea/p/4550451.html
Copyright © 2011-2022 走看看