Performance
A benchmark can reveal how many route gradients can be calculated per second:
e = dem_lisbon_raster
r = lisbon_road_network
et = terra::rast(e)
res = bench::mark(check = FALSE,
slope_raster = slope_raster(r, e),
slope_terra = slope_raster(r, et)
)
res
#> # A tibble: 2 × 6
#> expression min median `itr/sec` mem_alloc `gc/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
#> 1 slope_raster 73.2ms 75.3ms 12.9 19.68MB 2.15
#> 2 slope_terra 69.8ms 71.5ms 13.9 2.06MB 6.97
That is approximately
routes per second using the raster
and terra
(the default if installed, using RasterLayer
and native SpatRaster
objects) packages to extract elevation estimates from the raster datasets, respectively.
The message: use the terra
package to read-in DEM data for slope extraction if speed is important.
To go faster, you can chose the simple
method to gain some speed at the expense of accuracy:
e = dem_lisbon_raster
r = lisbon_road_network
res = bench::mark(check = FALSE,
bilinear1 = slope_raster(r, e),
bilinear2 = slope_raster(r, et),
simple1 = slope_raster(r, e, method = "simple"),
simple2 = slope_raster(r, et, method = "simple")
)
res
#> # A tibble: 4 × 6
#> expression min median `itr/sec` mem_alloc `gc/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
#> 1 bilinear1 74.4ms 74.8ms 13.3 5.48MB 5.33
#> 2 bilinear2 68ms 71.8ms 13.9 2.02MB 2.32
#> 3 simple1 61.9ms 62.7ms 15.9 2.14MB 5.31
#> 4 simple2 63.7ms 64ms 15.6 2.14MB 2.23