Magicodes.IE 在100万数据量下导入导出性能测试
原文作者:HueiFeng
前言
目前Magicodes.IE
更新到了2.2.3
,感谢大家的支持,同时建议大家在使用过程中如果遇到一些问题或者说需要一些额外的功能可以直接提issues,当然更建议大家提PR。
近期更新
2020.05.24
【Nuget】版本更新到2.2.2
【Excel导入】增加了stream导入扩展方法
【Excel导出】增加了内容居中(单列居中、整表居中)
【导出】对一些中间件代码进行了修复及优化
2020.05.16
【Nuget】版本更新到2.2.1
【PDF导出】对模板引擎进行升级更新
2020.05.12
【Nuget】版本更新到2.2.0
【Excel模板导出】支持导出字节
【文档】Magicodes.IE Csv导入导出
【Excel导入导出】修复标注的添加问题
【导出】ASP.NET Core Web API 中使用自定义格式化程序导出Excel、Pdf、Csv等内容 #64
【导入导出】支持使用System.ComponentModel.DataAnnotations命名空间下的部分特性来控制导入导出 #63
性能测试
电脑配置以及环境如下所示:
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.836 (/November2018Update/19H2)
AMD Ryzen 3600X, CPU, logical and physical cores
.NET Core SDK=5.0.-preview.4.20258.
[Host] : .NET Core 3.1. (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT
Job-OONFAJ : .NET Framework 4.8 (4.8.4180.0), X64 RyuJIT
Job-YIUEXF : .NET Core 2.2. (CoreCLR 4.6.28207.03, CoreFX 4.6.28208.02), X64 RyuJIT
Job-LZHMKS : .NET Core 3.1. (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT
IterationCount= LaunchCount= WarmupCount=
Excel & Csv 导出
Excel导出如下所示:
Method | Job | Runtime | RowsCount | Mean | Error | StdDev |
---|---|---|---|---|---|---|
ExportExcelAsByteArrayTest | Job-OONFAJ | .NET 4.6.1 | 10000 | 153.1 ms | 5.52 ms | 0.85 ms |
ExportExcelAsByteArrayTest | Job-YIUEXF | .NET Core 2.2 | 10000 | 138.0 ms | 1.53 ms | 0.40 ms |
ExportExcelAsByteArrayTest | Job-LZHMKS | .NET Core 3.1 | 10000 | 143.0 ms | 9.86 ms | 1.53 ms |
ExportExcelAsByteArrayTest | Job-OONFAJ | .NET 4.6.1 | 120000 | 1,904.2 ms | 98.37 ms | 25.55 ms |
ExportExcelAsByteArrayTest | Job-YIUEXF | .NET Core 2.2 | 120000 | 1,662.8 ms | 132.04 ms | 20.43 ms |
ExportExcelAsByteArrayTest | Job-LZHMKS | .NET Core 3.1 | 120000 | 1,636.1 ms | 99.64 ms | 25.88 ms |
ExportExcelAsByteArrayTest | Job-OONFAJ | .NET 4.6.1 | 240000 | 3,688.3 ms | 58.52 ms | 15.20 ms |
ExportExcelAsByteArrayTest | Job-YIUEXF | .NET Core 2.2 | 240000 | 3,268.1 ms | 138.16 ms | 21.38 ms |
ExportExcelAsByteArrayTest | Job-LZHMKS | .NET Core 3.1 | 240000 | 3,223.9 ms | 70.93 ms | 10.98 ms |
ExportExcelAsByteArrayTest | Job-OONFAJ | .NET 4.6.1 | 500000 | 7,723.4 ms | 179.06 ms | 46.50 ms |
ExportExcelAsByteArrayTest | Job-YIUEXF | .NET Core 2.2 | 500000 | 6,959.7 ms | 481.61 ms | 125.07 ms |
ExportExcelAsByteArrayTest | Job-LZHMKS | .NET Core 3.1 | 500000 | 6,833.2 ms | 331.74 ms | 86.15 ms |
ExportExcelAsByteArrayTest | Job-OONFAJ | .NET 4.6.1 | 1000000 | 15,443.7 ms | 582.64 ms | 151.31 ms |
ExportExcelAsByteArrayTest | Job-YIUEXF | .NET Core 2.2 | 1000000 | 13,798.9 ms | 207.09 ms | 32.05 ms |
ExportExcelAsByteArrayTest | Job-LZHMKS | .NET Core 3.1 | 1000000 | 13,484.1 ms | 424.85 ms | 110.33 ms |
Csv导出如下所示:
Method | Job | Runtime | RowsCount | Mean | Error | StdDev |
---|---|---|---|---|---|---|
ExportCsvAsByteArrayTest | Job-SRSOYE | .NET 4.6.1 | 10000 | 30.43 ms | 2.493 ms | 0.647 ms |
ExportCsvAsByteArrayTest | Job-WLDFBY | .NET Core 2.2 | 10000 | 30.12 ms | 5.981 ms | 1.553 ms |
ExportCsvAsByteArrayTest | Job-JSEPRQ | .NET Core 3.1 | 10000 | 24.53 ms | 0.142 ms | 0.022 ms |
ExportCsvAsByteArrayTest | Job-SRSOYE | .NET 4.6.1 | 120000 | 345.51 ms | 16.385 ms | 4.255 ms |
ExportCsvAsByteArrayTest | Job-WLDFBY | .NET Core 2.2 | 120000 | 330.03 ms | 16.025 ms | 4.162 ms |
ExportCsvAsByteArrayTest | Job-JSEPRQ | .NET Core 3.1 | 120000 | 287.98 ms | 11.898 ms | 3.090 ms |
ExportCsvAsByteArrayTest | Job-SRSOYE | .NET 4.6.1 | 240000 | 687.57 ms | 10.379 ms | 2.695 ms |
ExportCsvAsByteArrayTest | Job-WLDFBY | .NET Core 2.2 | 240000 | 656.00 ms | 13.741 ms | 2.126 ms |
ExportCsvAsByteArrayTest | Job-JSEPRQ | .NET Core 3.1 | 240000 | 560.43 ms | 12.721 ms | 3.304 ms |
ExportCsvAsByteArrayTest | Job-SRSOYE | .NET 4.6.1 | 500000 | 1,478.88 ms | 31.074 ms | 8.070 ms |
ExportCsvAsByteArrayTest | Job-WLDFBY | .NET Core 2.2 | 500000 | 1,379.52 ms | 20.652 ms | 5.363 ms |
ExportCsvAsByteArrayTest | Job-JSEPRQ | .NET Core 3.1 | 500000 | 1,182.48 ms | 39.358 ms | 10.221 ms |
ExportCsvAsByteArrayTest | Job-SRSOYE | .NET 4.6.1 | 1000000 | 2,918.99 ms | 43.023 ms | 6.658 ms |
ExportCsvAsByteArrayTest | Job-WLDFBY | .NET Core 2.2 | 1000000 | 2,751.29 ms | 19.970 ms | 5.186 ms |
ExportCsvAsByteArrayTest | Job-JSEPRQ | .NET Core 3.1 | 1000000 | 2,332.39 ms | 57.988 ms | 8.974 ms |
Excel & Csv 导入
Excel导入如下所示:
Method | Job | Runtime | RowsCount | Mean | Error | StdDev |
---|---|---|---|---|---|---|
ImportByStreamTest | Job-URKTYJ | .NET 4.6.1 | 10000 | 711.4 μs | 136.2 μs | 35.37 μs |
ImportByStreamTest | Job-AFBGUZ | .NET Core 2.2 | 10000 | 746.2 μs | 131.8 μs | 20.40 μs |
ImportByStreamTest | Job-DUXAFG | .NET Core 3.1 | 10000 | 792.4 μs | 186.5 μs | 48.42 μs |
ImportByStreamTest | Job-URKTYJ | .NET 4.6.1 | 120000 | 2,297.6 μs | 181.3 μs | 47.08 μs |
ImportByStreamTest | Job-AFBGUZ | .NET Core 2.2 | 120000 | 2,139.5 μs | 204.5 μs | 53.12 μs |
ImportByStreamTest | Job-DUXAFG | .NET Core 3.1 | 120000 | 2,035.8 μs | 304.8 μs | 47.17 μs |
ImportByStreamTest | Job-URKTYJ | .NET 4.6.1 | 240000 | 5,378.2 μs | 887.9 μs | 230.59 μs |
ImportByStreamTest | Job-AFBGUZ | .NET Core 2.2 | 240000 | 5,345.6 μs | 989.9 μs | 257.08 μs |
ImportByStreamTest | Job-DUXAFG | .NET Core 3.1 | 240000 | 4,672.5 μs | 1,004.5 μs | 260.86 μs |
ImportByStreamTest | Job-URKTYJ | .NET 4.6.1 | 500000 | 11,336.6 μs | 657.3 μs | 170.69 μs |
ImportByStreamTest | Job-AFBGUZ | .NET Core 2.2 | 500000 | 10,833.4 μs | 952.9 μs | 247.45 μs |
ImportByStreamTest | Job-DUXAFG | .NET Core 3.1 | 500000 | 10,525.7 μs | 561.0 μs | 145.69 μs |
ImportByStreamTest | Job-URKTYJ | .NET 4.6.1 | 1000000 | 21,965.7 μs | 1,058.5 μs | 274.88 μs |
ImportByStreamTest | Job-AFBGUZ | .NET Core 2.2 | 1000000 | 20,612.1 μs | 628.2 μs | 163.14 μs |
ImportByStreamTest | Job-DUXAFG | .NET Core 3.1 | 1000000 | 20,451.1 μs | 3,807.7 μs | 988.84 μs |
Csv导入如下所示:
Method | Job | Runtime | RowsCount | Mean | Error | StdDev |
---|---|---|---|---|---|---|
ImportByStreamTest | Job-OPUXWE | .NET 4.6.1 | 10000 | 294.1 μs | 1.99 μs | 0.31 μs |
ImportByStreamTest | Job-OVPAAE | .NET Core 2.2 | 10000 | 283.7 μs | 3.54 μs | 0.55 μs |
ImportByStreamTest | Job-AMXXYD | .NET Core 3.1 | 10000 | 284.5 μs | 1.77 μs | 0.46 μs |
ImportByStreamTest | Job-OPUXWE | .NET 4.6.1 | 120000 | 2,116.1 μs | 13.28 μs | 2.05 μs |
ImportByStreamTest | Job-OVPAAE | .NET Core 2.2 | 120000 | 1,855.8 μs | 80.59 μs | 20.93 μs |
ImportByStreamTest | Job-AMXXYD | .NET Core 3.1 | 120000 | 1,849.3 μs | 186.63 μs | 48.47 μs |
ImportByStreamTest | Job-OPUXWE | .NET 4.6.1 | 240000 | 5,121.9 μs | 270.99 μs | 70.37 μs |
ImportByStreamTest | Job-OVPAAE | .NET Core 2.2 | 240000 | 4,448.3 μs | 84.91 μs | 13.14 μs |
ImportByStreamTest | Job-AMXXYD | .NET Core 3.1 | 240000 | 4,301.9 μs | 78.77 μs | 20.46 μs |
ImportByStreamTest | Job-OPUXWE | .NET 4.6.1 | 500000 | 11,245.2 μs | 120.46 μs | 18.64 μs |
ImportByStreamTest | Job-OVPAAE | .NET Core 2.2 | 500000 | 10,214.1 μs | 113.20 μs | 29.40 μs |
ImportByStreamTest | Job-AMXXYD | .NET Core 3.1 | 500000 | 10,460.1 μs | 90.90 μs | 23.61 μs |
ImportByStreamTest | Job-OPUXWE | .NET 4.6.1 | 1000000 | 21,807.0 μs | 299.03 μs | 46.28 μs |
ImportByStreamTest | Job-OVPAAE | .NET Core 2.2 | 1000000 | 19,830.9 μs | 186.01 μs | 48.30 μs |
ImportByStreamTest | Job-AMXXYD | .NET Core 3.1 | 1000000 | 20,051.3 μs | 395.98 μs | 102.83 μs |
Reference
https://github.com/dotnetcore/Magicodes.IE
原文作者:HueiFeng
Magicodes.IE 在100万数据量下导入导出性能测试的更多相关文章
- Microsoft SQL Server 数据量大 导入导出 问题汇总
问题一: 今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行:文件SQL打开不了. 解决方法: 用自带的sqlc ...
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
c#中@标志的作用 参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...
- 达观数据CTO纪达麒:小标注数据量下自然语言处理实战经验
自然语言处理在文本信息抽取.自动审校.智能问答.情感分析等场景下都有非常多的实际应用需求,在人工智能领域里有极为广泛的应用场景.然而在实际工程应用中,最经常面临的挑战是我们往往很难有大量高质量的标注语 ...
- Thinkphp框架下PHPExcel实现Excel数据的批量化导入导出
第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thin ...
- Postgresql数据库数据简单的导入导出
Postgresql数据库数据简单的导入导出 博客分类: DataBase postgres 命令操作: 数据的导出:pg_dump -U postgres(用户名) (-t 表名) 数据库名( ...
- 大数据量下的SQL Server数据库自身优化
原文: http://www.d1net.com/bigdata/news/284983.html 1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情 ...
- mysql大数据量下的分页
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- (转)大数据量下的SQL Server数据库优化
在SQL Server中,默认MDF文件初始大小为5MB,自增为1MB,不限增长,LDF初始为1MB,增长为10%,限制文件增长到一定的数目:一般设计中,使用SQL自带的设计即可,但是大型数据库设计 ...
- 大数据量下MySQL插入方法的性能比较
不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方 ...
随机推荐
- ztree根据参数动态控制是否显示复选框/单选框(静态JSON数据)
本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:ztree根据参数动态控制是否显示复选框/单选框(静态JSON数据): 现有全省各地区静态JSON数据,现在想通过Url参数,动态控制是否显 ...
- Spring Cloud 学习 之 Spring Cloud Eureka(搭建)
Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...
- redux中间件的理解
redux的中间件就是用来处理reducer和actions之间应用,常用的中间件有redux-thunk,redux-sage.在redux中通过applyMiddleware方法使用中间件 使用例 ...
- {path:“ /”,expires:7}这一段是什么意思?
1.创建会话cookie: $ .cookie('name','value'); 2.创建到期的cookie,然后7天: $ .cookie('name','value',{到期日:7}); 3.创建 ...
- 推荐 10个 NB的 IDEA 插件,开发效率至少提升一倍
友情提示:插件虽好,可不要贪装哦,装多了会 卡 .卡 .卡 ~ 正经干活用的 分享一点自己工作中得心应手的IDEA插件,可不是在插件商店随随便便搜的,都经过实战检验,用过的都说好.可能有一些大家用过的 ...
- jar包名修改工具
jar包名修改工具 软件传送门:链接: https://pan.baidu.com/s/12StRdEkYGmMn1DuNSquXSw 提取码: i9w1 闲暇之余,利用jarjar.jar写了一 ...
- linux常用命令---系统辅助命令
系统辅助命令
- 使用urllib
urlopen的基本用法: 工具为:python3(windows) 其完整表达式为: urllib.request.urlopen(url, data=None, [timeout, ]*, caf ...
- 获取访问用户的客户端IP(适用于公网与局域网).
/** * 获取访问用户的客户端IP(适用于公网与局域网). */ public final String getIpAddr(final HttpServletRequest requ ...
- Spring JSR-250 注释
Spring还使用基于 JSR-250 注释,它包括 @PostConstruct 注释 @PreDestroy 注释 @Resource 注释 @PostConstruct 和 @PreDestro ...