JBR: I can't test the example now, but it would be a good idea to test it using the manual GC mode and compare it again, to see if it has any diference, as the object collection could be performed in the samne thread the function is running on the single thread example, making it slower than the separated thread version (taht's just an idea).
I also wouldn't have the main thread working on the same function (at the same time, as ziggy's double threaded example shows)... you'd be as well kicking off two threads to do half each, and let the main thread do whatever it needs to do elsewhere. Which is the whole point of threading... no?
Obviously, suposing you're doing something more than just comparing performance! :D