1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wydajny kod w R

Connected

ćwiczenie

Pomiar czasu parSapply()

Symulacja gry w kości jest embarrassingly parallel (idealnie równoległa). Tego rodzaju symulacje zazwyczaj – choć nie zawsze – dają wyraźny wzrost wydajności. Podobnie jak wcześniej, możemy skorzystać z microbenchmark() lub system.time(). Dla uproszczenia w tym ćwiczeniu użyjemy system.time().

Instrukcje

100 XP

Funkcja play() jest już zdefiniowana w twoim środowisku. Przyjmijmy, że chcemy rozegrać sto tysięcy gier.

  • Ustaw no_of_games na 1e5.
  • Użyj system.time(), aby zmierzyć czas wielokrotnego wywoływania play() szeregowo.
    • Wywołaj sapply() z argumentami 1:no_of_games oraz funkcją opakowującą play().
    • Przypisz wynik do zmiennej serial.
    • Opakuj to wywołanie w system.time(), aby zmierzyć czas wykonania.
  • Utwórz obiekt klastra z 4 rdzeniami i wyeksportuj do niego funkcję play().
  • Użyj system.time(), aby zmierzyć czas wielokrotnego wywoływania play() równolegle.
    • Przerób kod użyty do stworzenia serial tak, aby działał równolegle.