So I create a file named fib.groovy: def fib(int n) { if(n <= 1) return 1; else return fib(n-1) + fib(n-2); } s = System.currentTimeMillis(); fib(30); System.out.println(System.currentTimeMillis()-s); I compile it: sh bin/groovyc fib.groovy I run it: sh bin/groovy fib 20450 Now I create a file fib.java public class fib { static int fib(int n) { if(n <= 1) return 1; else return fib(n-1) + fib(n-2); } public static void main(String[] args) { long s = System.currentTimeMillis(); fib(30); System.out.println(System.currentTimeMillis()-s); } } I compile it javac fib.java I run it java fib 19 So 19 milli seconds -vs- 20 seconds.