Ultima, if you want so speed up the java implementation i suggest you use memory-mapped files files (NIO) and implement it iteratively... and pre-size the hashmaps/arraylists (assuming you're using those) to some decent default values. And if you want to do fair testing use the server VM and let it do a few rounds before you start timing, JVM loadup and class optimization takes a while. After that java is usually only about 50% slower than C++.