1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Viết mã R hiệu quả

Connected

Bài tập

Đo thời gian với parSapply()

Chạy trò chơi tung xúc xắc là dạng embarrassingly parallel. Những mô phỏng kiểu này thường (nhưng không phải luôn luôn) cho tốc độ tăng đáng kể. Như trước, bạn có thể dùng microbenchmark() hoặc system.time(). Để đơn giản, trong bài này ta sẽ dùng system.time().

Hướng dẫn

100 XP

Hàm play() đã được định nghĩa sẵn trong workspace của bạn. Giả sử bạn muốn chơi một trăm nghìn lượt.

  • Gán no_of_games bằng 1e5.
  • Dùng system.time() để đo thời gian gọi lặp play() theo kiểu tuần tự.
    • Gọi sapply() với 1:no_of_games và hàm bao play().
    • Gán kết quả vào serial.
    • Bao lời gọi này trong system.time() để đo thời gian.
  • Tạo một đối tượng cluster 4 lõi và export hàm play() sang đó.
  • Dùng system.time() để đo thời gian gọi lặp play() theo kiểu song song.
    • Biến đổi đoạn mã bạn đã dùng để tạo serial sao cho chạy song song.