1. Learn
  2. /
  3. Courses
  4. /
  5. 効率的なRコードの書き方

Connected

Exercise

Timings parSapply()

サイコロゲームの実行は「恥ずかしいほど並列化可能(embarrassingly parallel)」です。こうした種類のシミュレーションは、たいてい(いつもではありませんが)良いスピードアップが得られます。これまでと同様に、microbenchmark() または system.time() が使えます。今回は簡単のため、この演習では system.time() を使います。

Instructions

100 XP

play() 関数はワークスペースに定義済みです。ここでは10万回ゲームを行うと仮定します。

  • no_of_games を 1e5 に設定してください。
  • system.time() を使って、直列で play() を繰り返し呼び出したときの時間を計測します。
    • sapply() を 1:no_of_games と play() ラッパー関数で呼び出します。
    • 結果を serial に代入します。
    • この呼び出し全体を system.time() で包んで計測します。
  • 4コアのクラスターオブジェクトを作成し、play() 関数をそのクラスターにエクスポートします。
  • system.time() を使って、並列で play() を繰り返し呼び出したときの時間を計測します。
    • serial を作成したときのコードを書き換え、並列で動作するようにしてください。