เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Microbenchmark รายได้

สมมติว่าคุณทำงานเป็น Data Analyst ให้กับร้านค้าออนไลน์แห่งหนึ่ง และได้ดึงข้อมูลยอดขายของสินค้าหลายรายการในช่วงหนึ่งเดือน ข้อมูลนี้ถูกเก็บไว้ใน workspace ในรูปแบบ list ชื่อ ls_sales โดยแต่ละ element คือ vector ของรายได้ของสินค้าแต่ละชนิด

คุณต้องการดูว่ารายได้เพิ่มขึ้นสะสมอย่างไรในแต่ละวัน ซึ่งต้องคำนวณผลรวมสะสม (cumulative sum) Base R มีฟังก์ชัน cumsum() สำหรับงานนี้อยู่แล้ว แต่คุณอยากทดสอบว่าการประมวลผลแบบขนานจะช่วยได้หรือไม่ โดยจะลองรัน cumsum() กับทุก element ใน ls_sales ทั้งแบบลำดับและแบบขนาน แล้วเปรียบเทียบผลลัพธ์ที่ได้ package parallel และ microbenchmark ถูกโหลดไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนโปรแกรมแบบขนานใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ส่งเวอร์ชันแบบลำดับและแบบขนานเป็น argument ให้กับ microbenchmark()
  • สร้าง cluster โดยใช้จำนวน core ทั้งหมดที่มีลบออก 2
  • ใช้ cluster นั้นรัน cumsum() กับ ls_sales แบบขนานด้วย parLapply()
  • หยุดการทำงานของ cluster เมื่อคำนวณเสร็จแล้ว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Pass the code to microbenchmark
___
  
  "lapply" = lapply(ls_sales, cumsum),
  
  "parLapply" = {
    # Make a cluster of all cores minus two
    cluster <- ___
    # Use cluster to apply in parallel
    parLapply(cluster, ___, ___)
    # Stop cluster
    ___
  },
  times = 3
___
แก้ไขและรันโค้ด