-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Labels
Description
I noticed repr_geojson can be quite slow with larger datasets. I think that's because repr_geojson is rendering the entire object as geojson here. Would it be possible to subset the portion that will be displayed before converting to geojson?
library(repr)
# Demo spatial data from sf
nc <- sf::read_sf(system.file("shape/nc.shp", package="sf"))
nc_big <- nc[rep(seq_len(nrow(nc)), 1000), ] # copy 1000 times
nrow(nc_big)
#> 100000
nc_no_geom <- sf::st_drop_geometry(nc)
nc_big_no_geom <- sf::st_drop_geometry(nc_big)
# No difference in non-geo repr
bench::mark(repr(nc_no_geom), repr(nc_big_no_geom), check=FALSE)
#> expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc
#> <bch:expr> <bch:> <bch:> <dbl> <bch:byt> <dbl> <int> <dbl>
#> 1 repr(nc_no_geom) 3.2ms 3.54ms 253. 98.6KB 6.28 121 3
#> 2 repr(nc_big_no_geom) 3.16ms 3.46ms 287. 98.6KB 6.32 136 3
# nc_big is about 1000x slower in repr_geojson
bench::mark(repr_geojson(nc), repr_geojson(nc_big), check=FALSE)
#> expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc
#> <bch:expr> <bch:> <bch:> <dbl> <bch:byt> <dbl> <int> <dbl>
#> 1 repr_geojson(nc) 14.1ms 16ms 59.7 1.66KB 5.97 30 3
#> 2 repr_geojson(nc_big) 17.4s 17.4s 0.0575 1.53MB 4.03 1 70