Skip to content

This content is for v4.x version. Switch to the Stable version.

Benchmark

Spreadsheet write benchmark of openxml-office v4.x against a comparison library for each language.

The charts compare v4.x with the other library at the same number of cells. A ratio of 1.00× means they are equal; above 1.00× is a v4.x gain, and below 1.00× is a v4.x loss. Green marks a gain and red marks a loss. Speed and allocation are shown separately because a library can be faster while allocating more memory, or vice versa. The exact ratios are printed beside each bar.

  • Generated: 2026-10-20 01:33:09Z
  • Machine: Common (8 logical CPUs)
  • Runtime: 10.0.12 on Ubuntu 26.04.1 LTS
  • Layout: cells written in rows of up to 100 columns.

Notes:

  • Alloc = total managed bytes allocated during the run (churn), Managed Δ = managed heap retained afterwards.
  • WS = OS working set, Priv = private memory. CPU % is normalised across all logical processors (100% = one fully busy core-equivalent).
  • µs/cell = wall time per cell, Cells/s = throughput.
Metric (across all sizes)v4.xv2.9.0
Total managed allocation churn (MB)23.6437210.09
Total GC collections (Gen0+1+2)12510
Total GC pause time (ms)0.782093.19
  • v4.x is 291.5× faster on average (range 47.9×–563.9×).
  • v4.x allocates 950.5× less managed memory on average (range 126.3×–1599.4×).
  • v4.x triggered 1 GC collections vs 2510 for the legacy package.

The speed ratios below compare elapsed time at each workload size. Bar lengths are scaled within each chart; the printed ratios are the exact comparison.

Speed ratio
10 cells
563.86×
100 cells
494.35×
1,000 cells
279.43×
10,000 cells
71.96×
100,000 cells
47.90×
Less allocation ratio
10 cells
126.29×
100 cells
368.76×
1,000 cells
1,117.94×
10,000 cells
1,540.09×
100,000 cells
1,599.44×
LibraryCellsTime (ms)µs/cellCells/sAlloc (MB)Managed Δ (MB)WS Δ (MB)Peak WS (MB)Peak Priv (MB)Avg CPU (%)Peak CPU (%)GC 0/1/2File (KB)
v4.x (project reference)108.73873.1211450.120.140.06122.31182.8013.713.70/0/04.21
v2.9.0104923.14492314.17214.5514.6223.57138.26194.881.746.10/0/04.40
v4.x (project reference)1009.1991.93108780.120.130.00132.37189.0012.412.30/0/04.60
v2.9.01004544.2845442.832244.0114.5314.87143.50198.012.622.52/1/04.79
v4.x (project reference)100016.8316.83594260.310.330.00140.23194.7412.747.10/0/07.25
v2.9.010004702.124702.12213344.2016.9411.65148.33202.001.830.522/1/07.67
v4.x (project reference)10000108.8910.89918332.182.201.88156.49210.4812.721.80/0/031.64
v2.9.0100007836.23783.6212763351.026.5818.54161.24228.226.331.6224/3/134.75
v4.x (project reference)1000001119.1411.198935520.926.0419.35314.28366.9613.326.61/0/0280.27
v2.9.010000053607.02536.07186533456.3264.7582.73258.66358.3611.741.62239/14/3306.24

Highlights managed allocation churn and garbage collector pressure. High Gen0/1/2 counts, GC pause time and allocation rate indicate heavier memory stress.

LibraryCellsAlloc (MB)Alloc/cell (bytes)Alloc rate (MB/s)Gen0Gen1Gen2GC pause (ms)GC pause (%)Heap (MB)Fragmented (MB)Committed (MB)
v4.x (project reference)100.121207813.190000.000.003.300.8515.54
v2.9.01014.5515254222.950000.000.003.440.987.93
v4.x (project reference)1000.12125112.980000.000.003.220.7615.86
v2.9.010044.014614589.682102.180.053.680.2322.86
v4.x (project reference)10000.3132318.300000.000.003.270.7719.59
v2.9.01000344.2036091573.20221013.520.295.070.4523.56
v4.x (project reference)100002.1822819.980000.000.003.290.7016.05
v2.9.0100003351.02351380427.6322431177.322.2610.571.4733.71
v4.x (project reference)10000020.9221918.691000.780.073.380.7927.60
v2.9.010000033456.32350815624.1022391431900.173.5494.9827.84112.82

Each cell is a multiplier comparing the two libraries at the same cell count. Higher is always better for v4.x, and 1.00× means they are equal.

For example, 500.00× under Faster means v4.x finished the work 500 times faster than v2.9.0; 120.00× under Less RAM churn means v4.x allocated 120 times less managed memory.

CellsFaster (time)Higher throughputLess RAM churn (alloc)Less GC pauseLower peak RAMLower peak private RAMSmaller file
10563.86×563.86×126.29×n/a1.13×1.07×1.04×
100494.35×494.35×368.76×n/a1.08×1.05×1.04×
1000279.43×279.43×1117.94×n/a1.06×1.04×1.06×
1000071.96×71.96×1540.09×n/a1.03×1.08×1.10×
10000047.90×47.90×1599.44×2442.38×0.82×0.98×1.09×