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 44ms 44.7ms 22.0 16.26MB 12.6
#> 2 slope_terra 42.9ms 43.3ms 23.0 1.96MB 15.4
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 43.9ms 44.6ms 22.5 5.29MB 12.8
#> 2 bilinear2 42.5ms 43.1ms 23.1 1.86MB 7.71
#> 3 simple1 35.9ms 36.3ms 27.6 1.97MB 7.51
#> 4 simple2 37.6ms 37.9ms 26.3 1.98MB 11.7