引用自:
http://rsnippets.blogspot.com/2013/11/simulatin-speed-gnu-r-vs-julia.html
R
- library(e1071)
- cont.run <- function(burn.in, reps, n, d, l, s) {
- tr <- rep(0, n)
- r <- rep(0, reps)
- for (i in 1:reps) {
- sig <- rnorm(1, 0, d)
- mul <- 1
- if (sig < 0) {
- sig <- -sig
- mul <- -1
- }
- r[i] <- mul * sum(sig > tr) / (l * n)
- tr[runif(n) < s] <- abs(r[i])
- }
- return(kurtosis(r[burn.in:reps]))
- }
- system.time(replicate(10,
- cont.run(1000, 10000, 1000, 0.005, 10.0, 0.01)))
Julia
- using Distributions
- function cont_run(burn_in, reps, n, d, l, s)
- tr = Array(Float64, n)
- r = Array(Float64, reps)
- for i in 1:reps
- aris = 0
- sig = randn() * d
- mul = 1
- if sig < 0
- sig = -sig
- mul = -1
- end
- for k in 1:n
- if sig > tr[k]
- aris += 1
- end
- end
- ari = aris / (l * n)
- r[i] = mul * ari
- for j in 1:n
- if rand() < s
- tr[j] = ari
- end
- end
- end
- kurtosis(r[burn_in:reps])
- end
- n = 10
- t_start = time()
- k = Array(Float64, n)
- for i in 1:n
- k[i] = cont_run(1000, 10000, 1000, 0.005, 10.0, 0.01)
- end
- println(time() -t_start)
事实上在这个例子中Julia的运行速度可以比R快一个数量级



雷达卡







京公网安备 11010802022788号







