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 46.8ms 48.3ms 19.9 19.84MB 8.55
#> 2 slope_terra 44.1ms 45.4ms 22.0 1.94MB 6.29That 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 46.8ms 47.8ms 20.9 5.28MB 10.4
#> 2 bilinear2 44.6ms 45.1ms 22.1 1.86MB 8.30
#> 3 simple1 36.9ms 37.9ms 26.3 1.97MB 7.90
#> 4 simple2 38.7ms 39.3ms 25.3 1.98MB 7.58