f <- function(n) {
a <- 1
b <- 1
c <- 1
d <- 1
for (i in seq_len(n)) {
e <- (a * b)^3 + c # common subexpression (a * b)^3
f <- (a * b)^3 * d # common subexpression (a * b)^3
}
}
f_opt <- function(n) {
a <- 1
b <- 1
c <- 1
d <- 1
for (i in seq_len(n)) {
tmp <- (a * b)^3 # common subexpression elimination
a <- tmp + c
d <- tmp * d
}
}
f_c <- cmpfun(f)
f_opt_c <- cmpfun(f_opt)