24.5 Avoiding Method Dispatch

x <- runif(1e2)
bench::mark(
  mean(x),
  mean.default(x)
)[c("expression", "min", "median", "itr/sec", "n_gc")]
#> # A tibble: 2 × 4
#>   expression           min   median `itr/sec`
#>   <bch:expr>      <bch:tm> <bch:tm>     <dbl>
#> 1 mean(x)           3.02µs   3.18µs   299917.
#> 2 mean.default(x)    1.9µs      2µs   484513.
x <- runif(1e2)
bench::mark(
  mean(x),
  mean.default(x),
  .Internal(mean(x))
)[c("expression", "min", "median", "itr/sec", "n_gc")]
#> # A tibble: 3 × 4
#>   expression              min   median `itr/sec`
#>   <bch:expr>         <bch:tm> <bch:tm>     <dbl>
#> 1 mean(x)              3.05µs   3.23µs   301490.
#> 2 mean.default(x)       1.9µs   1.99µs   484688.
#> 3 .Internal(mean(x))  480.1ns 492.09ns  1987166.
x <- runif(1e4)
bench::mark(
  mean(x),
  mean.default(x),
  .Internal(mean(x))
)[c("expression", "min", "median", "itr/sec", "n_gc")]
#> # A tibble: 3 × 4
#>   expression              min   median `itr/sec`
#>   <bch:expr>         <bch:tm> <bch:tm>     <dbl>
#> 1 mean(x)              42.8µs     46µs    21650.
#> 2 mean.default(x)      40.9µs   44.8µs    22230.
#> 3 .Internal(mean(x))   37.7µs   43.3µs    23040.