0

下面的代码显示了一个计算量很大的示例(两个示例约 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()


4

0 回答 0