本記事では、現時点でのLTS「.NET 6」と最新のリリースバージョン「.NET 7」において、DioDocs for Excel(ディオドック)とその他のExcel操作ライブラリ(ClosedXML、OpenXml、EPPlus、NPOI)を使用して、ワークシートにデータを追加した際の測定結果を紹介します。
はじめに
以前の記事(2021年9月13日)では .NET Core 3.1と .NET 5でベンチマークを測定していました。今回は改めて .NET 6と .NET 7で同じ処理を実行しています。
実行環境
ベンチマークの測定には、.NET 6と .NET 7で動作するコンソールアプリケーションを作成して使用しています。測定に使用した実行環境は以下のとおりです。
- OS:Windows 11 Pro(22H2/22621.963)
- CPU:11th Gen Intel(R) Core(TM) i7-1195G7 @ 2.90GHz
- メモリ:32GB
- .NET 6.0.12 (6.0.1222.56807)
- .NET 7.0.1 (7.0.122.56804)
- BenchmarkDotNet:0.13.3
- CloseXML:0.97.0
- DocumentFormat.OpenXml:2.19.0
- EPPlus:6.1.1
- GrapeCity.DioDocs.Excel.ja:5.2.1
- NPOI:2.6.0
測定に使用したコンソールアプリケーションのソースコードは以下に置いています。
実行する内容
このコンソールアプリケーションで実行する処理は、DioDocs for Excelをはじめとする各ライブラリを使用して「ワークシートで100 x 100の範囲のセルに文字を設定する」処理を記載しています。ベンチマークの測定には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 6と .NET 7でそれぞれ測定した結果です。各ライブラリの「Mean(Arithmetic mean of all measurements)」の数値を比較してみると、以前とは異なりDioDocsが最速というわけではないようです。EPPlusとNPOIはバージョンアップにより、DioDocsと同等の速度を出せるようになってきています。
また、DioDocsに限らずどのライブラリにおいても .NET 6よりも .NET 7で測定した結果の方が速いことも確認できます。
処理を増やして実行してみる
上記の処理ではDioDocs、EPPlus、NPOIの測定結果でそれほど差が出なかったので、次は少し処理を増やして明確な差が現れるか測定してみます。
データを追加するセル範囲とセルに追加する文字列を以下のように更新します。DioDocs for Excelを使用した場合のコードですが、他のライブラリでも同じように処理を実装しています。
private const int ColumnNum = 100;
private const int RowNum = 1000;
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!" + i.ToString() + j.ToString();
}
}
workbook.Save(Stream.Null);
}
測定結果
.NET 6と .NET 7でそれぞれ測定した結果です。各ライブラリの「Mean(Arithmetic mean of all measurements)」の数値を比較してみると、どちらのバージョンでも他のライブラリよりもDioDocsが速いことが確認できます。
今後も .NET 8など最新バージョンがリリースされたタイミングで測定結果をお届けしたいと思います。
さいごに
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。