Timing a closure in Groovy

When you want to make some optimizations to your code, you often use the good old System.currentTimeMillis() method to time certain parts of your application. I wanted to do a similar thing when hacking some Groovy scripts recently, and the idea came to me that I could simply create a timing closure! So here it is, for your eyes only:

timer = { closure | 
    start = System.currentTimeMillis()
    println System.currentTimeMillis() - start

Then you can use your brand new timing closure:

timer { "sleep 10".execute().waitFor() }

That's not rocket science, but closures are really a powerful feature. Everyday I wish Java had such a feature built-in.


© 2012 Guillaume Laforge | The views and opinions expressed here are mine and don't reflect the ones from my employer.