Parallel module testing in Perl
Twitterにて:
たしかあったはず*1と思って探してみると*2、Test::Harness にHARNESS_OPTIONSというオプションがありました。以下のようにすると並列でテストで時間を大幅に短縮できます。
$ HARNESS_OPTIONS=j2 make test
実際、Xslateでこれを試してみるとテストの時間が2/3程度になりました*3。これはかなり効果があると考えていいでしょう。
ただし、モジュールが並列実行に対応してないケースがありえるので、すべてのケースで利用出来るわけではありません。すなわち、これはモジュールの作者が指定するのが望ましいオプションだと言えます。そして、Module::Install::TestTarget があればそれが簡単にできるのです。
# Makefile.PL # ... default_test_target env => { HARNESS_OPTIONS => 'j2' }; # module authorでのみ並列実行したい場合は # if $Module::Install::AUTHOR などとする # ...
これで余計なことを考えずにテスト時間が短縮されます。