Thinking about this it's possible that BC was flushing it's unspent output object (C++) cache. Without using a custom memory allocator, each one of these objects has to be unwound (explicitly deallocated). Especially these objects are spanning threads, that gets really costly.