After poking around in your code I saw that you where using the "StringBuffer" and printing everything through System.err. Both of these are "bad" practices. They both have small performance drops when used. StringBuffer is ment to be use only when two threads are editing it. StringBuilder should be used in all other cases. It is also reccommended to avoid System.err and instead to use Logger