Performance optimizations

This PR _tries_ to reduce method calls and object allocations.

See https://gist.github.com/splattael/5404417 for some benchmarks.
I am not a fan of assignments within the if conditions.