はじめに
最近自宅のOfficeを入れ替えたのですが、「もしかすると最新版のExcelだとマクロの処理が速くなっているかも」と思い、Excel2013とExcel2024で文字列結合の速度比較をしてみました。
テスト環境
ハードウェアの環境はExcel2013のテスト時と変わりません。
- PC
- CPU:Ryzen7 3700X
- RAM:32GB
- SSD:Samsung SSD 970 EVO Plus 500GB
- Excel:Excel 2024 (64bit)
テストに使用したコード
- 【ExcelVBA】文字列結合の速度比較に記載されているコードをそのまま使いました。
実行結果
- 理由は不明ですが、単純な文字列結合(SimpleConcat)が約4倍も速くなっていました!!
- 単にExcelのバージョンが新しくなって速くなったのか、あるいは64bit版だとメモリを沢山使えるので速くなったのかは分かりませんでした。
- かなり速くなったとはいえ、以下の配列を使う方法と比べると数十倍も処理が遅いです...
- 固定長配列(ArrayJoin)を使う方法も高速化して「ほぼ0秒」で処理が終わりましたが、なぜか動的配列(DynamicArrayJoin)を使う方法はほとんど処理速度が変わりませんでした。
Excel 2013 (32bit) | Excel 2024 (64bit) | |
---|---|---|
SimpleConcatの処理時間 | 2.265625秒 | 0.576904秒 |
ArrayJoinの処理時間 | 0.015625秒 | 0秒 |
DynamicArrayJoinの処理時間 | 0.015625秒 | 0.014892秒 |
まとめ
- ハードウェア環境は全く同じですが、Excel2013(32bit)と比べてExcel2024(64bit)では文字列結合の速度が全体的に向上していました。
- ただし動的配列を使う方法はほとんど処理速度が変わらなかったので、文字列結合の処理速度が気になる場合は固定長配列を使う方法が良いかもしれません。
- ただし固定長配列でバッファサイズを超えてしまう可能性がある場合は、動的配列を使った方が安心だと思います。