Magicodes.IE 在100万数据量下导入导出性能测试

December 17, 2023
测试
测试
测试
测试
7 分钟阅读

原文作者: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 (1909/November2018Update/19H2)
AMD Ryzen 5 3600X, 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.100-preview.4.20258.7
  [Host]     : .NET Core 3.1.4 (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.8 (CoreCLR 4.6.28207.03, CoreFX 4.6.28208.02), X64 RyuJIT
  Job-LZHMKS : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT

IterationCount=5  LaunchCount=1  WarmupCount=1

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

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多