Skip to content

About

Independent MiniExcel performance benchmarks and optional third-party comparisons

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MiniExcel benchmarks

Independent performance benchmarks for MiniExcel, migrated from that repository with the original Apache-2.0 license and authorship preserved. Historical results are in benchmarks/results. They describe their original runs, not necessarily the pinned source version.

This repository is separate from MiniExcel's regular unit tests and release artifacts. Neither benchmark project is packable. Moving comparison code here does not exempt users from third-party licenses or constitute ASF approval.

Checkout and source version

git clone --recurse-submodules https://github.com/mini-software/MiniExcel.Benchmarks.git
cd MiniExcel.Benchmarks
git submodule status

The MiniExcel submodule pins the source under test, initially 323e156bd51a3c071f81dcf9102d48f20545439e. Benchmarks reference only its production projects, not its tests or historical benchmark projects. No NuGet version is silently substituted. To measure a different commit:

git -C MiniExcel fetch origin
git -C MiniExcel checkout <commit>
git submodule status

Record that commit alongside results and commit the updated submodule pointer when intentionally updating the baseline.

Regular benchmarks

Install the .NET SDKs required by the projects (currently .NET 10 and 11). Run from this repository's root:

dotnet build MiniExcel.Benchmarks.slnx -c Release
dotnet run --project benchmarks\MiniExcel.Benchmarks -c Release -f net10.0 -- --filter '*QueryExcelBenchmark.MiniExcel_Query'

The default solution does not restore EPPlus or NPOI. The regular project also compares ClosedXML, ExcelDataReader and OpenXML SDK. Select creation and template benchmarks with '*CreateExcelBenchmark*' and '*TemplateExcelBenchmark*'. Run baseline and changed versions on the same machine. Its project file is named MiniExcel.PerformanceBenchmarks.csproj to avoid a BenchmarkDotNet project-discovery collision with historical benchmark projects inside the pinned MiniExcel submodule.

If only .NET 10 is installed, limit restore/build to that framework:

dotnet run --project benchmarks\MiniExcel.Benchmarks -c Release -f net10.0 -p:TargetFrameworks=net10.0 -- --list flat

The default job uses one launch, three warmups and three measurement iterations. For changes around 10%, add --iterationCount 15 --launchCount 3. The original benchmark guide describes peak-memory measurement.

Optional EPPlus/NPOI comparisons

Read the license and opt-in instructions before restoring or running the comparison project. EPPlus 7.7.3 and NPOI 2.8.0 remain isolated there; they are not dependencies of the default solution. No license acknowledgements are committed or enabled by CI.

The migrated workflow runs regular benchmarks and records their results. It checks out the pinned submodule and does not run the optional comparisons.

About

Independent MiniExcel performance benchmarks and optional third-party comparisons

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages