Performance Improvements

Lorenz Walthert

7/24/2017

We want to make styler faster.

library(styler)
microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 2
)
#> Unit: seconds
#>  expr      min       lq     mean   median       uq      max neval
#>  base 4.131253 4.131253 4.172017 4.172017 4.212781 4.212781     2

Replacing mutate statments.

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 2
)
#> Unit: seconds
#>  expr     min      lq     mean   median       uq      max neval
#>  base 2.13616 2.13616 2.223659 2.223659 2.311158 2.311158     2

Move opening argument out of needs indention.

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 5
)

#> Unit: seconds
#>  expr     min       lq     mean   median       uq      max neval
#>  base 2.18097 2.184721 2.225294 2.200893 2.241799 2.318089     5

Dropping unnecessary select and arrange stuffstatments

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 5
)
#> Unit: seconds
#>  expr      min       lq     mean   median       uq      max neval
#>  base 2.109271 2.134377 2.147821 2.158567 2.165384 2.171505     5

Some more stuff (early return, purr)

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 5
)
#> Unit: milliseconds
#>  expr      min       lq     mean   median       uq      max neval
#>  base 930.4391 944.9253 969.2838 951.4632 951.6571 1067.934     5

Various changes (positive and negative in terms of speed)

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 10
)
#> Unit: seconds
#> expr      min       lq     mean   median       uq      max neval
#>  base 1.235749 1.259139 1.269869 1.269396 1.275887 1.330341    10

Removed tibble bottlenecks (tibble 1.4.2, https://github.com/tidyverse/tibble/pull/348)

microbenchmark::microbenchmark(
  base = style_file("tests/testthat/indention_multiple/overall-in.R"),
  times = 10
)
#> Unit: milliseconds
#>  expr      min       lq     mean   median       uq      max neval
#>  base 514.9392 520.5061 587.6329 530.3154 548.7248 989.3332    10