With 2.4 out, I ran a quick test of how much speedup I could get by changing my old non-vectorized multi_normal sampling to the new vectorized form. I get a 40% time savings, without even trying hard. This is much better than I expected.
Timings with vectorized multi_normal:
# Elapsed Time: 96.8564 seconds (Warm-up)
# 87.8308 seconds (Sampling)
# 184.687 seconds (Total)
Timings without vectorized multi_normal:
# Elapsed Time: 168.544 seconds (Warm-up)
# 147.83 seconds (Sampling)
# 316.375 seconds (Total)
These timings are for a Gaussian mixed model with three random effects, 5000 cases, and 500 groups. The only difference between these two models was changing this line:
vary ~ multi_normal( rep_vector(0,3) , SIGMA );
to this line:
for ( j in 1:N_id ) vary[j] ~ multi_normal( rep_vector(0,3) , SIGMA );
Really nice stuff.