h5页面免费制作,泉州关键词优化推广,wordpress 阅读数插件,微信插件大全下载NPOI 导出 excel 性能测试Intro网上看到很多人说 NPOI 的性能不行#xff0c;自己写了一个 NPOI 的扩展库#xff0c;于是想尝试看看 NPOI 的性能究竟怎么样#xff0c;道听途说始终不如自己动手一试。测试环境测试工具#xff1a;BenchmarkDotNet v0.11.5EPPlus.Core.Exte… NPOI 导出 excel 性能测试Intro网上看到很多人说 NPOI 的性能不行自己写了一个 NPOI 的扩展库于是想尝试看看 NPOI 的性能究竟怎么样道听途说始终不如自己动手一试。测试环境测试工具BenchmarkDotNet v0.11.5EPPlus.Core.Extensions v2.3.2EPPlus v4.5.3.1测试代码Github 源码[SimpleJob(launchCount: 1, warmupCount: 1, targetCount: 5)]
[MemoryDiagnoser]
[MinColumn, MaxColumn, MeanColumn, MedianColumn]
public class WorkbookBasicTest
{ private const int ColsCount 10; [Params(10000, 30000, 50000, 65535)] public int RowsCount; [Benchmark(Baseline true)] public byte[] NpoiXlsWorkbookInit() { var workbook ExcelHelper.PrepareWorkbook(ExcelFormat.Xls); var sheet workbook.CreateSheet(tempSheet); for (var i 0; i RowsCount; i) { var row sheet.CreateRow(i); for (var j 0; j ColsCount; j) { var cell row.CreateCell(j); cell.SetCellValue($as ({i}, {j}) sa); } } return workbook.ToExcelBytes(); } [Benchmark] [MethodImpl(MethodImplOptions.NoInlining)] public byte[] NpoiXlsxWorkbookInit() { var workbook ExcelHelper.PrepareWorkbook(ExcelFormat.Xlsx); var sheet workbook.CreateSheet(tempSheet); for (var i 0; i RowsCount; i) { var row sheet.CreateRow(i); for (var j 0; j ColsCount; j) { var cell row.CreateCell(j); cell.SetCellValue($as ({i}, {j}) sa); } } return workbook.ToExcelBytes(); } [Benchmark] [MethodImpl(MethodImplOptions.NoInlining)] public byte[] EpplusWorkbookInit() { var excel new ExcelPackage(); var sheet excel.Workbook.Worksheets.Add(tempSheet); for (var i 1; i RowsCount; i) { for (var j 1; j ColsCount; j) { sheet.Cells[i, j].Value $as ({i}, {j}) sa; } } return excel.GetAsByteArray(); }
}测试结果在 Github 上查看结果 https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/perf/WeihanLi.Npoi.Benchmark/BenchmarkDotNet.Artifacts/results/WeihanLi.Npoi.Benchmark.WorkbookBasicTest-report-github.mdBenchmarkDotNetv0.11.5, OSWindows 10.0.18362
Intel Core i5-3470 CPU 3.20GHz (Ivy Bridge), 1 CPU, 4 logical and 4 physical cores
.NET Core SDK3.0.100 [Host] : .NET Core 2.2.6 (CoreCLR 4.6.27817.03, CoreFX 4.6.27818.02), 64bit RyuJIT Job-CBYTBY : .NET Core 2.2.6 (CoreCLR 4.6.27817.03, CoreFX 4.6.27818.02), 64bit RyuJIT
IterationCount5 LaunchCount1 WarmupCount1 MethodRowsCountMeanErrorStdDevMinMaxMedianRatioRatioSDGen 0Gen 1Gen 2AllocatedNpoiXlsWorkbookInit10000324.7 ms1.583 ms0.4110 ms324.3 ms325.4 ms324.6 ms1.000.0010000.00005000.00002000.000078.6 MBNpoiXlsxWorkbookInit100001,369.0 ms73.747 ms19.1517 ms1,341.3 ms1,384.4 ms1,381.1 ms4.220.0657000.000014000.00004000.0000306.45 MBEpplusWorkbookInit10000552.9 ms12.740 ms3.3085 ms549.7 ms557.7 ms552.4 ms1.700.0118000.00007000.00003000.0000121.05 MBNpoiXlsWorkbookInit300001,222.4 ms33.717 ms8.7562 ms1,209.0 ms1,233.1 ms1,222.5 ms1.000.0029000.000011000.00003000.0000235.03 MBNpoiXlsxWorkbookInit300004,226.2 ms299.833 ms77.8658 ms4,109.5 ms4,308.6 ms4,257.2 ms3.460.08174000.000034000.00006000.0000913.9 MBEpplusWorkbookInit300001,695.4 ms31.751 ms8.2457 ms1,686.3 ms1,706.5 ms1,694.2 ms1.390.0248000.000017000.00005000.0000358.51 MBNpoiXlsWorkbookInit500002,323.5 ms236.041 ms61.2990 ms2,286.0 ms2,431.9 ms2,294.2 ms1.000.0047000.000018000.00004000.0000417.1 MBNpoiXlsxWorkbookInit500007,055.2 ms279.256 ms72.5218 ms6,982.8 ms7,150.2 ms7,027.2 ms3.040.10288000.000051000.00006000.00001545.32 MBEpplusWorkbookInit500002,806.9 ms56.266 ms14.6121 ms2,792.9 ms2,829.1 ms2,804.6 ms1.210.0379000.000027000.00007000.0000578.46 MBNpoiXlsWorkbookInit655353,646.8 ms131.129 ms34.0537 ms3,603.0 ms3,696.3 ms3,642.5 ms1.000.0061000.000021000.00004000.0000504.46 MBNpoiXlsxWorkbookInit655359,295.6 ms486.761 ms126.4104 ms9,163.3 ms9,468.6 ms9,330.5 ms2.550.04390000.000067000.00008000.00002048.14 MBEpplusWorkbookInit655353,721.6 ms124.945 ms32.4478 ms3,680.7 ms3,766.8 ms3,714.1 ms1.020.01102000.000035000.00008000.0000747.85 MB从上面的测试结果来看npoi 导出 xls 的性能还是相当好的无论是所用时间还是内存都占优势只是 xls 一个 sheet 最多 65535 行数据所以测试数据最多只有 65535其次就是 epplus 导出 xlsx最次是 npoi 导出 xlsx 了。测试结论如果使用 NPOI 导出建议导出 xls如果要导出数据较多可以导出 csv 如果看了另外一个 csv 导出的测试csv 导出性能要比 excel 好很多如果实在是要导出 excel导入 xls 的话就分多个 sheet 处理如果一定要导出 xlsx 格式的 excel 推荐用 epplus 来处理相比 npoi 导出 xlsx 性能更好内存占用更少Referencehttps://benchmarkdotnet.org/https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/perf/WeihanLi.Npoi.Benchmark/WorkbookBasicTest.cs