¿Por qué la función mediana R estándar es mucho más lenta que una alternativa simple de C ++?

Hice la siguiente implementación de la mediana enC++ y lo usé enR víaRcpp:

// [[Rcpp::export]]
double median2(std::vector<double> x){
  double median;
  size_t size = x.size();
  sort(x.begin(), x.end());
  if (size  % 2 == 0){
      median = (x[size / 2 - 1] + x[size / 2]) / 2.0;
  }
  else {
      median = x[size / 2];
  }
  return median;
}

Si posteriormente comparo el rendimiento con la función mediana estándar R integrada, obtengo los siguientes resultados a través demicrobenchmark

> x = rnorm(100)
> microbenchmark(median(x),median2(x))
Unit: microseconds
       expr    min     lq     mean median     uq     max neval
  median(x) 25.469 26.990 34.96888 28.130 29.081 518.126   100
 median2(x)  1.140  1.521  2.47486  1.901  2.281  47.897   100

¿Por qué la función mediana estándar es mucho más lenta? Esto no es lo que esperaría ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta