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 45.9ms 46.4ms 21.2 16.26MB 9.10
#> 2 slope_terra 44.2ms 45ms 17.0 1.96MB 6.79
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 45.9ms 46.1ms 21.6 5.29MB 12.3
#> 2 bilinear2 44.6ms 45.2ms 22.2 1.86MB 4.93
#> 3 simple1 37.6ms 38.1ms 26.1 1.97MB 11.6
#> 4 simple2 39.6ms 40.1ms 24.9 1.98MB 7.47