下面的代码显示了一个计算量很大的示例(两个示例约 430 秒)。我试图通过使用 furrr::future_map 来提高效率,但到目前为止我还没有看到任何区别。
底层函数 osrm::osrmIsochrone 非常繁重,所以如果有人能指出我正确的方向,我会非常高兴。
library(dplyr)
data <- data.frame(
id = 1:2,
longitude = c(7.711633, 11.176595),
latitude = c(61.23923, 60.14509)
)
# multisession
tictoc::tic()
future::plan("multisession", workers = 2)
ca_multi <- furrr::future_map_dfr(.x = 1:nrow(data),
.f = ~osrm::osrmIsochrone(
loc = as.numeric(c(data$longitude[.],
data$latitude[.])),
breaks = c(5, 10),
returnclass = "sf",
res = 60))
tictoc::toc()
# purrr::map
tictoc::tic()
ca_seq <- purrr::map_dfr(.x = 1:nrow(data),
.f = ~osrm::osrmIsochrone(
loc = as.numeric(c(data$longitude[.],
data$latitude[.])),
breaks = 1,
returnclass = "sf",
res = 60))
tictoc::toc()