XLBench Results
Each section below embeds the full BenchmarkDotNet environment block (OS, CPU,
.NET SDK and runtime). Timings are hardware-specific; treat the allocation/GC
columns as the most portable signal across machines. Regenerate locally with
scripts/run-benchmarks.ps1.
📈 Interactive charts (GitHub Pages). Static charts and the full tables follow.
Each results table (one per test method) is heat-mapped independently on the Pages site (🟩 best → 🟥 worst).
⧗ Carried over from an earlier run. The rows and chart points below marked with this symbol were not measured here — the library is commercial and needs a licence key this run did not have — so they are replayed from snapshots/. Compare them as indicative rather than like-for-like, and see the repository README for how to refresh a snapshot.
- IronXL 2026.8.1, Job-HTCPYF job, captured 2026-08-03 on same hardware as this run.
Libraries under test
| Library |
Version |
Source |
| ClosedXML |
0.105.1 |
this run |
| EPPlus |
8.7.1 |
this run |
| OpenXML SDK |
3.5.1 |
this run |
| NPOI |
2.8.1 |
this run |
| MiniExcel |
1.46.0 |
this run |
| Sylvan |
0.5.8 |
this run |
| XLibur |
0.630.1-rc.18 |
this run |
| OfficeIMO |
3.4.4 |
this run |
| Telerik |
2026.3.923.100 |
this run |
| IronXL â§— |
2026.8.1 |
snapshot (2026.8.1, Job-HTCPYF, captured 2026-08-03) |
Comparison charts
Lower is better. Charts render in the GitHub file view; the Pages site has interactive versions.
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Read · open + set properties + save — time (ms)"
x-axis ["OpenXML SDK", "XLibur", "NPOI", "OfficeIMO", "EPPlus", "ClosedXML", "Telerik", "IronXL â§—"]
y-axis "Time (ms)"
bar [0.29, 4.64, 8.99, 23.6, 23.61, 37.26, 82.89, 208.75]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Read · open + set properties + save — allocated (MB)"
x-axis ["OpenXML SDK", "XLibur", "NPOI", "OfficeIMO", "ClosedXML", "EPPlus", "IronXL â§—", "Telerik"]
y-axis "Allocated (MB)"
bar [0.34, 1.37, 1.9, 6.58, 13.2, 13.87, 152.81, 185.57]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Read · open + read all cells — time (ms)"
x-axis ["Sylvan", "MiniExcel", "XLibur", "OpenXML SDK", "EPPlus", "NPOI", "OfficeIMO", "Telerik", "ClosedXML", "IronXL â§—"]
y-axis "Time (ms)"
bar [299.55, 724.37, 772.01, 1105.22, 1163.49, 2444.67, 3062.71, 5361.57, 6590.82, 9318.11]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Read · open + read all cells — allocated (MB)"
x-axis ["Sylvan", "XLibur", "OpenXML SDK", "MiniExcel", "OfficeIMO", "EPPlus", "NPOI", "ClosedXML", "Telerik", "IronXL â§—"]
y-axis "Allocated (MB)"
bar [25.28, 136.76, 627.82, 806.71, 824.06, 925.23, 1075.67, 1082.51, 4169.57, 6333.04]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Write · create + save — time (ms)"
x-axis ["Sylvan", "MiniExcel", "OpenXML SDK", "XLibur", "ClosedXML", "EPPlus", "NPOI", "OfficeIMO", "IronXL â§—", "Telerik"]
y-axis "Time (ms)"
bar [38.37, 58.78, 150.72, 180.73, 379.28, 432.71, 641.24, 938.79, 943.14, 1686.14]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Write · create + save — allocated (MB)"
x-axis ["Sylvan", "XLibur", "MiniExcel", "OpenXML SDK", "ClosedXML", "NPOI", "EPPlus", "OfficeIMO", "IronXL â§—", "Telerik"]
y-axis "Allocated (MB)"
bar [13.27, 60.19, 84.59, 134.19, 181.09, 246.26, 322.89, 361.06, 797.63, 2097]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Report · data + conditional formatting + chart — time (ms)"
x-axis ["XLibur", "OpenXML SDK", "EPPlus", "ClosedXML", "NPOI", "Telerik", "OfficeIMO", "IronXL â§—"]
y-axis "Time (ms)"
bar [7.48, 7.85, 14.77, 16.05, 31.06, 138.28, 211.22, 387.85]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Report · data + conditional formatting + chart — allocated (MB)"
x-axis ["XLibur", "OpenXML SDK", "ClosedXML", "EPPlus", "NPOI", "IronXL â§—", "Telerik", "OfficeIMO"]
y-axis "Allocated (MB)"
bar [3.35, 4.92, 8.02, 13.92, 16.43, 237.38, 432.54, 904.7]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Edit · delete rows + set column + recalculate — time (ms)"
x-axis ["XLibur", "OpenXML SDK", "EPPlus", "NPOI", "ClosedXML", "IronXL â§—", "OfficeIMO", "Telerik"]
y-axis "Time (ms)"
bar [8.13, 25.55, 108.89, 426.53, 431.64, 1577.27, 3044.6, 6998.35]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Edit · delete rows + set column + recalculate — allocated (MB)"
x-axis ["XLibur", "OpenXML SDK", "EPPlus", "ClosedXML", "NPOI", "OfficeIMO", "IronXL â§—", "Telerik"]
y-axis "Allocated (MB)"
bar [2.68, 9.83, 142.49, 337.87, 413.44, 491.27, 753.86, 16837.76]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Edit · insert 2 columns + recalculate — time (ms)"
x-axis ["XLibur", "EPPlus", "ClosedXML", "OpenXML SDK", "NPOI", "IronXL â§—", "OfficeIMO", "Telerik"]
y-axis "Time (ms)"
bar [9.35, 17.39, 28.34, 39.03, 42.31, 113.28, 151.75, 218.87]
---
config:
xyChart:
showDataLabel: true
---
xychart-beta
title "Edit · insert 2 columns + recalculate — allocated (MB)"
x-axis ["XLibur", "EPPlus", "OpenXML SDK", "ClosedXML", "NPOI", "OfficeIMO", "IronXL â§—", "Telerik"]
y-axis "Allocated (MB)"
bar [2.72, 11.41, 13.11, 14.02, 30.77, 66.87, 104.88, 280.56]
Detailed results
BenchmarkDotNet v0.15.8, Windows 11 (10.0.22631.6199/23H2/2023Update/SunValley3)
AMD Ryzen 9 5950X 3.40GHz, 1 CPU, 32 logical and 16 physical cores
.NET SDK 10.0.401
[Host] : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3
DefaultJob : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3
Read · open + set properties + save
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| OpenXML SDK |
OpenXmlReadBenchmarks |
OpenAmendPropertiesAndSave |
0.2926 ms |
0.0057 ms |
0.0132 ms |
0.2921 ms |
29.2969 |
18.5547 |
15.6250 |
0.34 MB |
| XLibur |
XLiburReadBenchmarks |
OpenAmendPropertiesAndSave |
4.6433 ms |
0.0910 ms |
0.1664 ms |
4.6250 ms |
62.5000 |
31.2500 |
- |
1.37 MB |
| NPOI |
NpoiReadBenchmarks |
OpenAmendPropertiesAndSave |
8.9877 ms |
0.1337 ms |
0.1251 ms |
8.9705 ms |
62.5000 |
31.2500 |
- |
1.9 MB |
| OfficeIMO |
OfficeImoReadBenchmarks |
OpenAmendPropertiesAndSave |
23.5969 ms |
0.2362 ms |
0.1844 ms |
23.5568 ms |
562.5000 |
437.5000 |
406.2500 |
6.58 MB |
| EPPlus |
EpPlusReadBenchmarks |
OpenAmendPropertiesAndSave |
23.6104 ms |
0.3413 ms |
0.3025 ms |
23.5916 ms |
1000.0000 |
1000.0000 |
1000.0000 |
13.87 MB |
| ClosedXML |
ClosedXmlReadBenchmarks |
OpenAmendPropertiesAndSave |
37.2554 ms |
0.6842 ms |
1.7538 ms |
36.7543 ms |
800.0000 |
400.0000 |
- |
13.2 MB |
| Telerik |
TelerikReadBenchmarks |
OpenAmendPropertiesAndSave |
82.8894 ms |
1.6500 ms |
2.2585 ms |
83.3659 ms |
10666.6667 |
1000.0000 |
666.6667 |
185.57 MB |
| IronXL â§— |
IronXlReadBenchmarks |
OpenAmendPropertiesAndSave |
208.746 ms |
155.7570 ms |
92.6885 ms |
168.705 ms |
9000.0000 |
2000.0000 |
- |
152.81 MB |
Read · open + read all cells
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| Sylvan |
SylvanReadBenchmarks |
OpenAndReadAll |
299.5476 ms |
3.0312 ms |
2.8354 ms |
298.6628 ms |
1000.0000 |
500.0000 |
- |
25.28 MB |
| MiniExcel |
MiniExcelReadBenchmarks |
OpenAndReadAll |
724.3653 ms |
7.2053 ms |
6.7399 ms |
722.3058 ms |
51000.0000 |
4000.0000 |
1000.0000 |
806.71 MB |
| XLibur |
XLiburReadBenchmarks |
OpenAndReadAll |
772.0097 ms |
9.7858 ms |
9.1536 ms |
773.4865 ms |
8000.0000 |
5000.0000 |
1000.0000 |
136.76 MB |
| OpenXML SDK |
OpenXmlReadBenchmarks |
OpenAndReadAll |
1,105.2172 ms |
13.3264 ms |
12.4655 ms |
1,105.8823 ms |
40000.0000 |
6000.0000 |
1000.0000 |
627.82 MB |
| EPPlus |
EpPlusReadBenchmarks |
OpenAndReadAll |
1,163.4871 ms |
20.3593 ms |
18.0480 ms |
1,166.6611 ms |
49000.0000 |
14000.0000 |
7000.0000 |
925.23 MB |
| NPOI |
NpoiReadBenchmarks |
OpenAndReadAll |
2,444.6708 ms |
46.6560 ms |
49.9214 ms |
2,432.8925 ms |
68000.0000 |
62000.0000 |
6000.0000 |
1075.67 MB |
| OfficeIMO |
OfficeImoReadBenchmarks |
OpenAndReadAll |
3,062.7098 ms |
43.6077 ms |
38.6571 ms |
3,061.4738 ms |
53000.0000 |
39000.0000 |
5000.0000 |
824.06 MB |
| Telerik |
TelerikReadBenchmarks |
OpenAndReadAll |
5,361.5710 ms |
45.6645 ms |
40.4804 ms |
5,351.9473 ms |
253000.0000 |
52000.0000 |
6000.0000 |
4169.57 MB |
| ClosedXML |
ClosedXmlReadBenchmarks |
OpenAndReadAll |
6,590.8175 ms |
43.1224 ms |
38.2269 ms |
6,591.2324 ms |
59000.0000 |
23000.0000 |
3000.0000 |
1082.51 MB |
| IronXL â§— |
IronXlReadBenchmarks |
OpenAndReadAll |
9,318.107 ms |
477.3336 ms |
315.7266 ms |
9,377.407 ms |
393000.0000 |
202000.0000 |
10000.0000 |
6333.04 MB |
Write · create + save
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| Sylvan |
SylvanWriteBenchmarks |
CreateAndSave |
38.3708 ms |
0.7672 ms |
1.0755 ms |
38.3984 ms |
1714.2857 |
1642.8571 |
1500.0000 |
13.27 MB |
| MiniExcel |
MiniExcelWriteBenchmarks |
CreateAndSave |
58.7767 ms |
1.1611 ms |
1.5501 ms |
59.2379 ms |
5333.3333 |
1444.4444 |
1333.3333 |
84.59 MB |
| OpenXML SDK |
OpenXmlWriteBenchmarks |
CreateAndSave |
150.7181 ms |
1.5970 ms |
1.4157 ms |
150.6293 ms |
8000.0000 |
2000.0000 |
2000.0000 |
134.19 MB |
| XLibur |
XLiburWriteBenchmarks |
CreateAndSave |
180.7263 ms |
3.4520 ms |
7.2055 ms |
179.0123 ms |
3000.0000 |
2500.0000 |
2000.0000 |
60.19 MB |
| ClosedXML |
ClosedXmlWriteBenchmarks |
CreateAndSave |
379.2798 ms |
7.5325 ms |
10.5595 ms |
378.5064 ms |
11000.0000 |
6000.0000 |
3000.0000 |
181.09 MB |
| EPPlus |
EpPlusWriteBenchmarks |
CreateAndSave |
432.7059 ms |
6.5272 ms |
6.1055 ms |
432.9096 ms |
20000.0000 |
9000.0000 |
3000.0000 |
322.89 MB |
| NPOI |
NpoiWriteBenchmarks |
CreateAndSave |
641.2387 ms |
12.5557 ms |
13.4344 ms |
637.9651 ms |
14000.0000 |
10000.0000 |
1000.0000 |
246.26 MB |
| OfficeIMO |
OfficeImoWriteBenchmarks |
CreateAndSave |
938.7875 ms |
18.1743 ms |
17.0002 ms |
935.1267 ms |
19000.0000 |
13000.0000 |
3000.0000 |
361.06 MB |
| IronXL â§— |
IronXlWriteBenchmarks |
CreateAndSave |
943.137 ms |
18.5191 ms |
11.0204 ms |
938.999 ms |
48000.0000 |
16000.0000 |
3000.0000 |
797.63 MB |
| Telerik |
TelerikWriteBenchmarks |
CreateAndSave |
1,686.1373 ms |
23.1003 ms |
21.6080 ms |
1,685.9446 ms |
130000.0000 |
13000.0000 |
5000.0000 |
2097 MB |
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| XLibur |
XLiburReportBenchmarks |
CreateStockReport |
7.4850 ms |
0.1187 ms |
0.1111 ms |
7.4696 ms |
187.5000 |
187.5000 |
187.5000 |
3.35 MB |
| OpenXML SDK |
OpenXmlReportBenchmarks |
CreateStockReport |
7.8456 ms |
0.1078 ms |
0.1009 ms |
7.8519 ms |
375.0000 |
359.3750 |
187.5000 |
4.92 MB |
| EPPlus |
EpPlusReportBenchmarks |
CreateStockReport |
14.7744 ms |
0.2665 ms |
0.2618 ms |
14.7755 ms |
1000.0000 |
1000.0000 |
1000.0000 |
13.92 MB |
| ClosedXML |
ClosedXmlReportBenchmarks |
CreateStockReport |
16.0515 ms |
0.2600 ms |
0.2305 ms |
16.0634 ms |
468.7500 |
187.5000 |
31.2500 |
8.02 MB |
| NPOI |
NpoiReportBenchmarks |
CreateStockReport |
31.0555 ms |
0.5784 ms |
0.5411 ms |
30.9846 ms |
875.0000 |
750.0000 |
375.0000 |
16.43 MB |
| Telerik |
TelerikReportBenchmarks |
CreateStockReport |
138.2812 ms |
3.1119 ms |
9.1266 ms |
136.9434 ms |
27000.0000 |
7000.0000 |
2000.0000 |
432.54 MB |
| OfficeIMO |
OfficeImoReportBenchmarks |
CreateStockReport |
211.2154 ms |
3.7558 ms |
4.6125 ms |
211.0322 ms |
57000.0000 |
2000.0000 |
666.6667 |
904.7 MB |
| IronXL â§— |
IronXlReportBenchmarks |
CreateStockReport |
387.849 ms |
36.5456 ms |
24.1726 ms |
384.092 ms |
14000.0000 |
3000.0000 |
- |
237.38 MB |
Edit · delete rows + set column + recalculate
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| XLibur |
XLiburEditBenchmarks |
EditAndRecalculate |
8.1345 ms |
0.1546 ms |
0.1840 ms |
8.0815 ms |
156.2500 |
78.1250 |
- |
2.68 MB |
| OpenXML SDK |
OpenXmlEditBenchmarks |
EditAndRecalculate |
25.5515 ms |
0.5048 ms |
0.4957 ms |
25.5053 ms |
687.5000 |
593.7500 |
156.2500 |
9.83 MB |
| EPPlus |
EpPlusEditBenchmarks |
EditAndRecalculate |
108.8889 ms |
8.7654 ms |
24.1424 ms |
100.1175 ms |
9000.0000 |
1200.0000 |
1000.0000 |
142.49 MB |
| NPOI |
NpoiEditBenchmarks |
EditAndRecalculate |
426.5312 ms |
8.4631 ms |
17.6657 ms |
421.4851 ms |
25000.0000 |
1000.0000 |
- |
413.44 MB |
| ClosedXML |
ClosedXmlEditBenchmarks |
EditAndRecalculate |
431.6441 ms |
28.8196 ms |
79.3775 ms |
411.7576 ms |
21000.0000 |
1000.0000 |
- |
337.87 MB |
| IronXL â§— |
IronXlEditBenchmarks |
EditAndRecalculate |
1,577.273 ms |
62.9583 ms |
41.6430 ms |
1,583.098 ms |
57000.0000 |
36000.0000 |
15000.0000 |
753.86 MB |
| OfficeIMO |
OfficeImoEditBenchmarks |
EditAndRecalculate |
3,044.6008 ms |
54.7408 ms |
85.2249 ms |
3,032.6962 ms |
30000.0000 |
1000.0000 |
- |
491.27 MB |
| Telerik |
TelerikEditBenchmarks |
EditAndRecalculate |
6,998.3527 ms |
222.5297 ms |
620.3238 ms |
6,738.1386 ms |
1062000.0000 |
242000.0000 |
76000.0000 |
16837.76 MB |
Edit · insert 2 columns + recalculate
| Library |
Type |
Method |
Mean |
Error |
StdDev |
Median |
Gen0 |
Gen1 |
Gen2 |
Allocated |
| XLibur |
XLiburInsertBenchmarks |
InsertColumnsAndRecalculate |
9.3540 ms |
0.1301 ms |
0.1217 ms |
9.3692 ms |
156.2500 |
62.5000 |
- |
2.72 MB |
| EPPlus |
EpPlusInsertBenchmarks |
InsertColumnsAndRecalculate |
17.3917 ms |
0.2584 ms |
0.2291 ms |
17.4103 ms |
1000.0000 |
1000.0000 |
1000.0000 |
11.41 MB |
| ClosedXML |
ClosedXmlInsertBenchmarks |
InsertColumnsAndRecalculate |
28.3425 ms |
0.5302 ms |
1.1859 ms |
28.1032 ms |
750.0000 |
250.0000 |
- |
14.02 MB |
| OpenXML SDK |
OpenXmlInsertBenchmarks |
InsertColumnsAndRecalculate |
39.0301 ms |
0.7195 ms |
1.6240 ms |
39.0171 ms |
1153.8462 |
1076.9231 |
461.5385 |
13.11 MB |
| NPOI |
NpoiInsertBenchmarks |
InsertColumnsAndRecalculate |
42.3117 ms |
0.8375 ms |
1.9243 ms |
42.1737 ms |
2000.0000 |
1400.0000 |
600.0000 |
30.77 MB |
| IronXL â§— |
IronXlInsertBenchmarks |
InsertColumnsAndRecalculate |
113.284 ms |
41.9750 ms |
27.7638 ms |
97.052 ms |
7000.0000 |
2500.0000 |
750.0000 |
104.88 MB |
| OfficeIMO |
OfficeImoInsertBenchmarks |
InsertColumnsAndRecalculate |
151.7491 ms |
3.0104 ms |
6.5443 ms |
150.5488 ms |
5000.0000 |
2000.0000 |
1000.0000 |
66.87 MB |
| Telerik |
TelerikInsertBenchmarks |
InsertColumnsAndRecalculate |
218.8704 ms |
4.3701 ms |
10.9637 ms |
221.2416 ms |
18000.0000 |
6000.0000 |
2000.0000 |
280.56 MB |