R是否优化了矩阵乘法的顺序?

Does R optimise the order of matrix multiplications?

如果我将 3 个矩阵相乘,比如 ABC。根据矩阵的大小,执行 (AB)C 或 A(BC) 可能更有效。如果我评估:

A %*% B %*% C

这会被优化吗?

感谢 Beauvel 上校让我走上了正确的道路 - 只需测试一下。使用 wikipedia 中的示例并适当放大:

> mult <- 100
> ar <- 10 * mult
> ac <- 30 * mult
> br <- 30 * mult
> bc <- 5 * mult
> cr <- 5 * mult
> cc <- 60 * mult
> 
> A <- matrix(rnorm(ar * ac), ar, ac)
> B <- matrix(rnorm(br * bc), br, bc)
> C <- matrix(rnorm(cr * cc), cr, cc)
> 
> system.time({ (A %*% B) %*% C })
    user  system elapsed 
    3.01    0.00    3.01 
> system.time({ A %*% (B %*% C) })
    user  system elapsed 
    25.34    0.03   25.37 
> system.time({ A %*% B %*% C })
    user  system elapsed 
    2.98    0.00    2.98 
> system.time({ t(C) %*% t(B) %*% t(A) })
   user  system elapsed 
  25.61    0.03   25.64 

顺便说一句 - R 从左到右求值。