Una comparativa di un po' di linguaggi e compilatori, con un test number-crunching:
https://github.com/nsf/pnoise 
I risultati (ordinati):
D (gdc): 0,066999680 seconds time elapsed
gcc -O3: 0,076729664 seconds time elapsed
Crystal: 0,077063864 seconds time elapsed
Nim (clang): 0,077463342 seconds time elapsed
Rust: 0,078053001 seconds time elapsed
D (ldc2): 0,096995053 seconds time elapsed
clang -O3: 0,143604111 seconds time elapsed
Nim (gcc): 0,159299532 seconds time elapsed
Go gccgo -O3: 0,309625279 seconds time elapsed
D (dmd): 0,339820165 seconds time elapsed
Go gc: 0,360201714 seconds time elapsed
Java: 0,597987438 seconds time elapsed
mono C#: 1,052041381 seconds time elapsed
Scopro solo ora questo simpatico linguaggio:
crystal-lang.org 
; nel sito però non spiega niente dell'ffi e di come chiamare le funzioni c, e temo che tra l'altro il tempo basso sia dovuto al fatto che il gc manco è partito, per il resto D, Rust e Nim sono alla pari col C, c'era da aspettarselo; Go e D compilato con dmd sono simili per via del gc.
Il risultato di mono invece è dovuto ad una scelta del runtime di usare i double anche quando è richiesto un float, sembra che verrà fixato e mi aspetto che si allineerà ai tempi della jvm.