> x <- runif(100000000)
> y <- runif(100000000)
> z <- runif(100000000)
> ## 最初のものより二番目の方が速い
> # 割り算2つよりは掛け算と割り算一つずつが得
> system.time(x/y/z)
ユーザ システム 経過
1.719 0.420 2.129
> system.time(x/(y*z))
ユーザ システム 経過
1.116 0.423 1.533
> # べき乗は高くつく
> system.time(1.1*x^3+2.2*x^2+3.3*x+4.4)
ユーザ システム 経過
5.338 1.964 7.270
> system.time(((1.1*x+2.2)*x+3.3)*x+4.4)
ユーザ システム 経過
1.442 1.437 2.863
> # べき乗は高くつく
> system.time(x^3+2*x^2+3*x+4)
ユーザ システム 経過
5.014 1.666 6.649
> system.time(((x+2)*x+3)*x+4)
ユーザ システム 経過
1.209 1.197 2.393
> # べき乗は高くつく
> system.time(x^y)
ユーザ システム 経過
8.824 0.229 9.018
> system.time(exp(y*log(x)))
ユーザ システム 経過
3.492 0.647 4.120
> # 前もって定数 log(10) を計算しておいても何の得もない
> system.time(10^y)
ユーザ システム 経過
9.068 0.220 9.253
> system.time(exp(y*log(10)))
ユーザ システム 経過
1.671 0.426 2.087
> system.time({a <- log(10); exp(y*a)})
ユーザ システム 経過
1.670 0.425 2.085