用 microbenchmark 測試營收
你在一家網路銷售商擔任資料分析師。你已經查詢到某個月內不同產品的銷售資料,並以清單 ls_sales 存放在工作空間中。這個清單的每個元素,都是某個產品的每日營收向量。
你想查看營收逐日的成長情形。這表示需要計算累積總和。Base R 提供了 cumsum() 可以完成這件事。不過你也想看看平行化是否有幫助。你打算把 cumsum() 分別套用到 ls_sales 的每個元素上,做一次「逐一(序列)」與「平行」的版本,並比較結果。parallel 與 microbenchmark 套件已為你載入。
本練習屬於課程
R 平行程式設計
練習說明
- 在
microbenchmark()呼叫中,同時傳入序列版與平行版作為引數。 - 產生一個叢集,使用可用核心數減 2 的規模。
- 使用該叢集透過
parLapply()平行地把cumsum()套用到ls_sales。 - 計算完成後,停止叢集。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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
___