本記事では、現時点でのLTS「 .NET Core 3.1」と最新のリリースバージョン「 .NET 5」において、DioDocs for Excel(ディオドック)とその他のExcel操作ライブラリ(ClosedXML、OpenXml、EPPlus、NPOI)を使用して、Excelファイルを生成した際の測定結果を紹介します。
はじめに
以前の記事(2019年10月31日)では .NET Core 3.0でベンチマークを測定していました。今回は改めて .NET Core 3.1と .NET 5で同じ処理を実行しています。
実行環境
ベンチマークの測定には、 .NET Core 3.1と .NET 5で動作するコンソールアプリケーションを作成して使用しています。測定に使用した実行環境は以下のとおりです。
- OS:Windows 10.0.19043.51(21H1/May2021Update)
- CPU:Intel Core i7-7500U CPU 2.70GHz
- メモリ:24GB
- .NET Core 3.1.18(CoreCLR 4.700.21.35901、CoreFX 4.700.21.36305、X64 RyuJIT)
- .NET 5.0.9(5.0.921.35908)、X64 RyuJIT
- BenchmarkDotNet:0.13.1
- CloseXML:0.95.4
- DocumentFormat.OpenXml:2.13.1
- EPPlus:5.7.3
- GrapeCity.DioDocs.Excel.ja:4.1.2
- NPOI:2.5.4
コンソールアプリケーションのソースコードは以下に置いています。
https://github.com/GrapeCityJP/DioDocsBenchmarkApp1
実行する内容
このコンソールアプリケーションで実行する処理は、DioDocs for Excelをはじめとする各ライブラリを使用して「100 x 100の範囲のセルに文字を設定したExcelファイルを生成する」処理を記載しています。ベンチマークの測定にはBenchmarkDotNetを使用しています。
以下はDioDocs for Excelを使用した場合のコードですが、他のライブラリでも同じように上記の処理を実装しています。
private const int ColumnNum = 100;
private const int RowNum = 100;
public void DioDocs()
{
var workbook = new GrapeCity.Documents.Excel.Workbook();
var worksheet = workbook.ActiveSheet;
for (var i = 1; i <= ColumnNum; i++)
{
for (var j = 1; j <= RowNum; j++)
{
worksheet.Range[i, j].Value = "Hello World!";
}
}
workbook.Save(Stream.Null);
}
測定結果
.NET Core 3.1と .NET 5でそれぞれ測定した結果です。各ライブラリの「Mean(Arithmetic mean of all measurements)」の数値を比較してみると、どちらのバージョンでも他のライブラリよりもDioDocsが速いことが確認できます。さらに .NET Core 3.1よりも .NET 5で測定した結果の方がさらに速い(DioDocsに限りませんが)ことも確認できます。
追記(2021.10.07)
DioDocs for ExcelとNPOIの比較資料を公開しました。機能と色々な処理パフォーマンスの比較をまとめた資料になっています。
さいごに
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。