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 44.9ms 47.6ms 20.6 21.86MB 8.82
#> 2 slope_terra 43.5ms 44.1ms 22.7 1.81MB 9.71That 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.7ms 44.9ms 22.3 5.15MB 8.35
#> 2 bilinear2 43.2ms 43.7ms 22.8 1.74MB 4.57
#> 3 simple1 36.4ms 36.9ms 26.9 1.84MB 8.08
#> 4 simple2 38.7ms 39.8ms 25.1 1.84MB 8.37