Benchmarking: używanie `expression`` quote` lub żadnego z nich

Zasadniczo, gdy uruchamiam testy porównawcze, zawijam swoje oświadczeniaexpression. Ostatnio zasugerowano, aby (a) tego nie robić lub (b) używaćquote zamiast wyrazu.

Zawijanie stwierdzeń ma dwie zalety:

w porównaniu z całymi stwierdzeniami łatwiej je wymienić.Mogę przejrzeć listę danych wejściowych i porównać te wyniki

Jednak badając różne metody, zauważyłem rozbieżność między tymi trzema metodami (zawijanieexpression, owijając sięquotelub wcale nie owijać)

Pytanie brzmi:
Dlaczego ta rozbieżność?
(wydaje się, że zawijaniequote nie ocenia połączenia.)

PRZYKŁAD:
# SAMPLE DATA
  mat <-  matrix(sample(seq(1e6), 4^2*1e4, T), ncol=400) 

# RAW EXPRESSION TO BENCHMARK IS: 
  # apply(mat, 2, mean)

# WRAPPED EXPRESSION: 
  expr <- expression(apply(mat, 2, mean))
  quot <- quote(apply(mat, 2, mean))

# BENCHMARKS
  benchmark(raw=apply(mat, 2, mean), expr, quot)[, -(7:8)]
  #    test replications elapsed relative user.self sys.self
  #  2 expr          100   1.269       NA     1.256    0.019
  #  3 quot          100   0.000       NA     0.001    0.000
  #  1  raw          100   1.494       NA     1.286    0.021


# BENCHMARKED INDIVIDUALLY 
  benchmark(raw=apply(mat, 2, mean))[, -(7:8)]
  benchmark(expr)[, -(7:8)]
  benchmark(quot)[, -(7:8)]

  # results
  #    test replications elapsed relative user.self sys.self
  #  1  raw          100   1.274        1      1.26    0.018
  #    test replications elapsed relative user.self sys.self
  #  1 expr          100   1.476        1     1.342    0.021
  #    test replications elapsed relative user.self sys.self
  #  1 quot          100   0.006        1     0.006    0.001

questionAnswers(1)

yourAnswerToTheQuestion