るりまで複数バージョンのドキュメント生成するrakeタスクをmultitaskで並列化した

8コアマシンを使っていると8コア使いたくなるのでべんり

github.com

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

いいなと思ったらKyashでお金を下さい
20191128011151
GitHubスポンサーも受け付けています
https://github.com/sponsors/hanachin/