遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍

今天遇到了AutoMapper的一个性能问题,使用的是AutoMapper的Project特性,AutoMapper版本是3.3.0,代码如下:

return await _repository
    .GetByStartId(startIngId, itemCount)
    .Project()
    .To<TDto>()
    .ToListAsync();

当获取包含200条数据的列表时,竟然超过5秒。

GetDocs(3000, 200)
6304ms

GetDocs(3000, 200)
5822ms

GetDocs(3000, 200)
7553ms

而改为100条数据,只需不到10毫秒。

GetDocs(3000, 100)
10ms

GetDocs(3000, 100)
7ms

GetDocs(3000, 100,)
6ms

相差近千倍,真是不可思议。

不用AutoMapper,直接用Select new {},问题立马解决。

时间: 2024-10-15 09:00:46

遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍的相关文章

批量新增百万条数据 十百万条数据

--创建用户表CREATE TABLE table_1(    id int PRIMARY KEY, -- 主键ID    c1 varchar(24) NOT NULL,-- 列1    c2 datetime NOT NULL -- 列2) -- 批量新增一万条数据CREATE PROCEDURE PROC_INSERT @max int = 1000000, @c1 int = 1as WHILE @c1  <= @maxBEGIN  INSERT INTO Table_1 VALUES

SQL 去重 显示第一条数据 显示一条数据

需求描述:根据某一个字段或几个字段去重来显示任一条数据,第一条或最后一条. 数据样式如下图: 尝试解决: --count(*)方法(只把条数为1条的显示出来了,超过1条全部过滤了) select * from t4 where 自编条码 in (select 自编条码 from t4 group by 自编条码 having count(id)=1) 以上方法,会把仅1条记录的显示,但是重复的并没有保留其中一条,也过滤掉了. 所以,我们需要变化一下,提供三种解决方法: 一.通过row_numbe

oracle将多条数据合并成一条

select  t.col1,t.col2  ,wmsys.wm_concat(t.col3||' ') AS col3 , wmsys.wm_concat(t.col4||'') as col4,wmsys.wm_concat(t.col5||'') as col5,wmsys.wm_concat(t.col6||'') as col6 from tablename t GROUP BY  t.col1,t.col2 ;

QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)

如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开始使用的QTreeWidget 控件来显示我的数据,发现该控件在显示10000行以下的数据还可以应付的过来,但超过10000条,就明显感觉到屏幕刷新就会有卡的现象,而且占据内存很大,虽然操作起来简单方便,但灵活性没有QTreeView强大.因为我要显示的数据量是非常大的,甚至过1000万,因此,采用

lr参数化——500户并发迭代1次 循环取5条数据

lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuju5 想实现vuser1取shuju1,vuser2取shuju1,vuser3取shuju1,vuser4取shuju1,vuser5取shuju1..........vuser100取shuju1. vuser101取shuju2,vuser102取shuju2,vuser103取shuju2,

性能优化:虚拟列表,如何渲染10万条数据的dom,页面同时不卡顿

最近做的一个需求,当列表大概有2万条数据,又不让做成分页,如果页面直接渲染2万条数据,在一些低配电脑上可能会照成页面卡死,基于这个需求,我们来手写一个虚拟列表 思路 列表中固定只显示少量的数据,比如60条 在列表滚动的时候不断的去插入删除dom startIndex.endIndex,不断的改变这个值来获取最新的显示列表 paddingTop.paddingBottom撑开容器的滚动区域 首先看一下当直接插入2万条列表时,页面的性能 可以看到火焰图中已经有了红色的部分了,dom渲染也耗时也有1s

SqlBulkCopy类进行大数据(10000万条以上)插入测试

好多天没写博客了,刚刚毕业一个多月,在IT的路上真是迷茫啊! 关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进行效率的测试.后来查找发现可以通过SqlBulkCopy类进行大数据插入操作,本文就来介绍一个这个类的作用并做了相关的效率测试(与Insert语句进行对比). SqlBulkCopy只能向SqlServer表写入数据,该表既可以是同一个服务器上的也可以是远程服务器上的.当然要写入的数据即数据源不单单

SqlServer 创建聚集索引与非聚集索引处理千万条数据的优化,以及之间的区别

在以下的文章中,我将以"办公自动化"系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] ( --TGongwen是红头文件表名 [Gid] [int] IDENTITY (1, 1) NOT NULL , --本表的id号,也是主键 [title] [varchar] (80) COLLA

Spark性能调优之解决数据倾斜

Spark性能调优之解决数据倾斜 数据倾斜七种解决方案 shuffle的过程最容易引起数据倾斜 1.使用Hive ETL预处理数据    ? 方案适用场景:如果导致数据倾斜的是Hive表.如果该Hive表中的数据本身很不均匀(比如某个 key对应了100万数据,其他key才对应了10条数据),而且业务场景需要频繁使用Spark对Hive表 执行某个分析操作,那么比较适合使用这种技术方案.    ? 方案实现思路:此时可以评估一下,是否可以通过Hive来进行数据预处理(即通过Hive ETL预先对