るりまで複数バージョンのドキュメント生成するrakeタスクをmultitaskで並列化した
8コアマシンを使っていると8コア使いたくなるのでべんり
rakeコマンドには標準で -m
オプションというのがあって特に何も考えてなくても -m
つけると依存タスクを並列に実行できる(並列で動かしても問題ないつくりになっていれば、だけど)
-m, --multitask Treat all tasks as multitasks.
自分で明示的に書くときは task
の代わりに multitask
メソッドを使って宣言する
https://ruby.github.io/rake/Rake/DSL.html#method-i-multitask
MultiTaskはスレッドを使って並列で動く
Same as a regular task, but the immediate prerequisites are done in parallel using Ruby threads. https://ruby.github.io/rake/Rake/MultiTask.html
わりときいてこのぐらいかかってたのが
bundle exec rake 146.31s user 11.44s system 99% cpu 2:38.20 total
こうなった
bundle exec rake 178.90s user 13.06s system 553% cpu 34.658 total