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 48.6ms 50.6ms 19.8 16.27MB 9.90
#> 2 slope_terra 47.2ms 47.6ms 20.8 1.96MB 5.95That 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 48.4ms 48.7ms 20.5 5.28MB 20.5
#> 2 bilinear2 46.6ms 47.9ms 20.9 1.86MB 4.64
#> 3 simple1 38.3ms 39.4ms 25.3 1.97MB 7.60
#> 4 simple2 40.9ms 41.5ms 23.9 1.98MB 7.96