parallelize
parallel::mclapply()
, parallel::mcMap()
windows에서는 사용할 수 없고, mac에서만 사용할 수 있음
require(parallel)
## Loading required package: parallel
cores = detectCores() # 4
unlist(mclapply(21:30, sqrt, mc.cores=4))
## [1] 4.582576 4.690416 4.795832 4.898979 5.000000 5.099020 5.196152
## [8] 5.291503 5.385165 5.477226
이 경우에서, mclapply()는 실제로 lapply()보다 느리다. 여러 코어에 계산을 보내고 결과를 수집하기 때문이다. 다음 예를 통해 이를 확인해보면 다음과 같다
boot_df = function(x){
x[sample(nrow(x), replace=TRUE), ]
}
rsquared = function(model){
summary(model)$r.square
}
boot_lm = function(i){
rsquared(lm(mpg~wt+disp, data=boot_df(mtcars)))
}
system.time(lapply(1:5000, boot_lm)) # 5000번 반복
## user system elapsed
## 5.746 0.068 5.975
cores = detectCores()
system.time(mclapply(1:5000, boot_lm, mc.cores=cores)) # 5000번 반복
## user system elapsed
## 6.969 0.253 3.141
'R > functional' 카테고리의 다른 글
data_frame, apply (0) | 2018.06.07 |
---|---|
lapply (0) | 2018.06.06 |