2016-08-02 3 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

Если ваша задача, рассчитанная на одном узле, занимает очень много времени, это будет отражено в сокращенных истекших временах. С другой стороны, если расчет мал, большинство времени будет потрачено на поддержку (настройку сеанса, перемещение данных, получение данных ...) и аннулирование или даже отрицание эффекта параллельных вычислений.

Смежные вопросы