运行效率啊-2分钟与475毫秒的对比

  今天切身体会到了运行效率的重要性

  起因是新阳找我说我这的接口又调不出数据了,我通过运行单元测试,单元测试同样很给力,运行了2分钟后,提示我有8621条记录,新阳电脑上运行报错为:连接超时。嗨,都是大数据带来的低效率惹的祸啊。

 

  新阳在我旁边出谋划策说要不修改文件,将timeout改为2分钟,要不删点数据库里的数据。我觉得这肯定是不可行的,这只是解决了一时的问题,并不能长久的解决问题,之后肯定会遇到比这时候数据还大的时候,到那时该怎么办呢?

 

  通过修改代码,单元测试体现的效果如下,数据大小仍为8621

 

  通过分析,降低效率的代码部分主要是

                   foreach (var itemResult in enOnclassList)
                  {
                       BasicOnClassViewModel onclass = new BasicOnClassViewModel()
                       {
                            OnClassID =itemResult.OnClassID,//ID
                            OnClassName =itemResult.OnClassName,//上课班名称
                            CourseName =itemResult.BasicCourseEntity.CourseName,//课程名称
                            CourseTypeName =itemResult.BasicCourseEntity.BasicCourseTypeEntity.CourseTypeName,//课程类型名称
                            Name =itemResult.BasicTeacherEntity.Name,//教师姓名
                            Term =itemResult.BasicSchoolCalendarEntity.Term,
                           studentSum=Convert.ToString(OnClassStudentBll.CurrentDal.LoadItems(p => p.OnClassID ==itemResult.OnClassID && p.IsEnabled == 1).ToList().Count()), //当前上课班总人数
                            TeacherID =itemResult.TeacherID,  //教师ID
                            organizationName =itemResult.BasicCourseEntity.BasicOrganizationEntity.OrganizationName  //机构名称
                       };
                       onClassList.Add(onclass);
                   }


 

   这段代码将数据库中的实体中转化为页面实体,将相应字段一一对应,从这段代码中我们可以看到转换过程中通过多次间接调用外键实体中的字段,其中还嵌套这一次查询。

修改后的代码为

               enOnclassList = this.CurrentDal.LoadPageItems(pageSize, pageIndex, outtotal, o => o.IsEnabled == 1, true).Select(s => newBasicOnClassViewModel() { OnClassID = s.OnClassID, OnClassName = s.OnClassName,CourseName = s.BasicCourseEntity.CourseName, CourseTypeName =s.BasicCourseEntity.BasicCourseTypeEntity.CourseTypeName, Name =s.BasicTeacherEntity.Name, Term = s.BasicSchoolCalendarEntity.Term, TeacherID =s.TeacherID, organizationName = s.BasicCourseEntity.BasicOrganizationEntity.OrganizationName,studentSum = s.BasicOnClassStudentEntities.Count.ToString() }).ToList();


这段代码虽然也通过外键实体获取了某些字段的值,但是并没有进行多余的查询,提高了效率!


评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值