Testing the unnesting performance of tidyr: comparing the version available on CRAN (v0.8.3, i.e. git checkout tags/v0.8.3) and the latest master (a0ecd23). Cloned the source codes for tibble and tidyr from github and built them to include source code output in profvis.
library(tibble)
# small tibble for profvis
tbl <- tibble(x = rep(list(1), 10))
# larger tibble to better demonstrate drop in performance
tbl_larger <- tibble(x = rep(list(1), 10^4))
tbl
## # A tibble: 10 x 1
## x
## <list>
## 1 <dbl [1]>
## 2 <dbl [1]>
## 3 <dbl [1]>
## 4 <dbl [1]>
## 5 <dbl [1]>
## 6 <dbl [1]>
## 7 <dbl [1]>
## 8 <dbl [1]>
## 9 <dbl [1]>
## 10 <dbl [1]>
tidyrlibrary(tidyr, lib.loc = "libs/master/")
profvis::profvis(unnest(tbl, x))
profvis::profvis(unnest(tbl_larger, x))
tidyr version
system.time({ unnest(tbl_larger, x) })
## user system elapsed
## 9.215 0.004 9.220
sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────────────────────────
## setting value
## version R version 3.6.1 (2019-07-05)
## os Ubuntu 19.04
## system x86_64, linux-gnu
## ui X11
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz Europe/Paris
## date 2019-07-30
##
## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────
## ! package * version date lib source
## assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)
## backports 1.1.4 2019-04-10 [1] CRAN (R 3.6.0)
## cli 1.1.0 2019-03-19 [1] CRAN (R 3.6.0)
## crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)
## digest 0.6.20 2019-07-04 [1] CRAN (R 3.6.1)
## evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.0)
## fansi 0.4.0 2018-10-05 [1] CRAN (R 3.6.0)
## glue 1.3.1 2019-03-12 [1] CRAN (R 3.6.0)
## htmltools 0.3.6 2017-04-28 [1] CRAN (R 3.6.0)
## htmlwidgets 1.3 2018-09-30 [1] CRAN (R 3.6.0)
## jsonlite 1.6 2018-12-07 [1] CRAN (R 3.6.0)
## knitr 1.23 2019-05-18 [1] CRAN (R 3.6.0)
## magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)
## pillar 1.4.2 2019-06-29 [1] CRAN (R 3.6.0)
## pkgconfig 2.0.2 2018-08-16 [1] CRAN (R 3.6.0)
## profvis 0.3.6 2019-05-14 [1] CRAN (R 3.6.1)
## purrr 0.3.2 2019-03-15 [1] CRAN (R 3.6.0)
## Rcpp 1.0.2 2019-07-25 [1] CRAN (R 3.6.1)
## rlang 0.4.0 2019-06-25 [1] CRAN (R 3.6.0)
## rmarkdown 1.14 2019-07-12 [1] CRAN (R 3.6.1)
## sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)
## stringi 1.4.3 2019-03-12 [1] CRAN (R 3.6.0)
## stringr 1.4.0 2019-02-10 [1] CRAN (R 3.6.0)
## tibble * 2.1.3.9000 2019-07-30 [1] local
## P tidyr * 0.8.3.9000 2019-07-30 [?] local
## tidyselect 0.2.5 2018-10-11 [1] CRAN (R 3.6.0)
## unilur 0.4.0.9000 2019-07-30 [1] Github (koncina/unilur@89a5c1d)
## utf8 1.1.4 2018-05-24 [1] CRAN (R 3.6.0)
## vctrs 0.2.0 2019-07-05 [1] CRAN (R 3.6.1)
## withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)
## xfun 0.8 2019-06-25 [1] CRAN (R 3.6.0)
## yaml 2.2.0 2018-07-25 [1] CRAN (R 3.6.0)
## zeallot 0.1.0 2018-01-28 [1] CRAN (R 3.6.0)
##
## [1] /home/eric/R/x86_64-pc-linux-gnu-library/3.6
## [2] /usr/local/lib/R/site-library
## [3] /usr/lib/R/site-library
## [4] /usr/lib/R/library
##
## P ── Loaded and on-disk path mismatch.
tidyr v0.8.3# Now using tidyr as on CRAN (v0.8.3)
detach("package:tidyr", unload = TRUE)
library(tidyr, lib.loc = "libs/cran/")
profvis::profvis(unnest(tbl, x))
profvis::profvis(unnest(tbl_larger, x))
tidyr v0.8.3
system.time({ unnest(tbl_larger, x) })
## user system elapsed
## 0.034 0.000 0.034
sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────────────────────────
## setting value
## version R version 3.6.1 (2019-07-05)
## os Ubuntu 19.04
## system x86_64, linux-gnu
## ui X11
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz Europe/Paris
## date 2019-07-30
##
## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────
## ! package * version date lib source
## assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)
## backports 1.1.4 2019-04-10 [1] CRAN (R 3.6.0)
## cli 1.1.0 2019-03-19 [1] CRAN (R 3.6.0)
## crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)
## digest 0.6.20 2019-07-04 [1] CRAN (R 3.6.1)
## dplyr 0.8.3 2019-07-04 [1] CRAN (R 3.6.1)
## evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.0)
## fansi 0.4.0 2018-10-05 [1] CRAN (R 3.6.0)
## glue 1.3.1 2019-03-12 [1] CRAN (R 3.6.0)
## htmltools 0.3.6 2017-04-28 [1] CRAN (R 3.6.0)
## htmlwidgets 1.3 2018-09-30 [1] CRAN (R 3.6.0)
## jsonlite 1.6 2018-12-07 [1] CRAN (R 3.6.0)
## knitr 1.23 2019-05-18 [1] CRAN (R 3.6.0)
## magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)
## pillar 1.4.2 2019-06-29 [1] CRAN (R 3.6.0)
## pkgconfig 2.0.2 2018-08-16 [1] CRAN (R 3.6.0)
## profvis 0.3.6 2019-05-14 [1] CRAN (R 3.6.1)
## purrr 0.3.2 2019-03-15 [1] CRAN (R 3.6.0)
## R6 2.4.0 2019-02-14 [1] CRAN (R 3.6.0)
## Rcpp 1.0.2 2019-07-25 [1] CRAN (R 3.6.1)
## rlang 0.4.0 2019-06-25 [1] CRAN (R 3.6.0)
## rmarkdown 1.14 2019-07-12 [1] CRAN (R 3.6.1)
## sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)
## stringi 1.4.3 2019-03-12 [1] CRAN (R 3.6.0)
## stringr 1.4.0 2019-02-10 [1] CRAN (R 3.6.0)
## tibble * 2.1.3.9000 2019-07-30 [1] local
## VP tidyr * 0.8.3 2019-07-30 [?] local
## tidyselect 0.2.5 2018-10-11 [1] CRAN (R 3.6.0)
## unilur 0.4.0.9000 2019-07-30 [1] Github (koncina/unilur@89a5c1d)
## utf8 1.1.4 2018-05-24 [1] CRAN (R 3.6.0)
## vctrs 0.2.0 2019-07-05 [1] CRAN (R 3.6.1)
## withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)
## xfun 0.8 2019-06-25 [1] CRAN (R 3.6.0)
## yaml 2.2.0 2018-07-25 [1] CRAN (R 3.6.0)
## zeallot 0.1.0 2018-01-28 [1] CRAN (R 3.6.0)
##
## [1] /home/eric/R/x86_64-pc-linux-gnu-library/3.6
## [2] /usr/local/lib/R/site-library
## [3] /usr/lib/R/site-library
## [4] /usr/lib/R/library
##
## V ── Loaded and on-disk version mismatch.
## P ── Loaded and on-disk path mismatch.