Visual Studio CodeのプラグインであるC++ TestMateを使うと、Visual Studio上でGoogleTestの各テストを並列実行することができます。
設定は簡単で、C++ TestMateのSettingsを開いて以下の2項目に最大並列数を指定します。
- Parallel Execution Limit
- Parallel Execution Of Executable Limit
正直、説明を読んでもこの二つの違いがはっきり分かりません。おそらく前者は単一実行プログラムの最大並列実行数で、後者は複数実行プログラムを動かしたとの最大並列実行数です。少なくとも片方を1にすると並列実行しなくなりますので、私は両方とも8に設定しています。
並列実行は便利な機能です。例えば、すべての組み合わせをテストしたくなるようなテストがたまにあります。スクリーンショットの例では、PLLの設定パラメータがこれで、複数あるパラメータのすべての組み合わせに対してビットフィールドが正しく設定されているか非常に多くの組み合わせについて確認しています。そのためシングルスレッドの場合、10秒近い時間がかかります。
そこで、複数あるパラメータのひとつについてテストを分解しています。スクリーンショットの例ではpパラメータのループを分解して、P==1の場合、p==2の場合…とテスト・ケースを独立させました。こうすることでマルチコアCPUの恩恵に浴することができます。
総テスト時間は9.0秒と表示されていますが、これは表示されている各テストの総和です。実際には1,2秒で終了しています。