2016-08-02 4 views
1

r에서 직렬 및 병렬 실행의 타이밍을 평가하려고했습니다. "lapply"함수와 "parLapply"함수를 비교할 때, 나는 다음과 같은 결과를 얻었다.parLapply를 사용한 경과 시간/사용자 시간 단축

vec1 <- 1:400000 
system.time(result <- lapply(vec1, function(x) x+2)) 

#using 3 nodes 
cl3 <- snow::makeCluster(c("localhost","localhost","localhost"), type = "SOCK") 
snow::clusterExport(cl3, c("vec1"), envir = .GlobalEnv) 
system.time(clus3 <- snow::parLapply(cl3, vec1, function(x) x+2)) 
snow::stopCluster(cl3) 

는 lapply : 사용 시간 = 0.69, 경과 시간 = 0.70 parLapply : 사용자 시간 = 0.49, 경과 시간 = 0.92

비록 사용자 시간이 감소되고, 경과 시간이 증가 될 것으로 보인다. 이 일이 일어날 수 있습니까? 병렬 실행을 사용할 때는 경과 시간을 줄여야한다고 생각했기 때문에.

답변

1

단일 노드에서 계산 된 작업이 실행하는 데 시간이 오래 걸리면 경과 시간이 줄어 듭니다. 다른 한편, 계산이 작 으면 대부분의 시간이 유지 (세션 설정, 데이터 이동, 데이터 검색 ...)에 소비되고 병렬 계산의 효과를 무효화하거나 무효화합니다.