Why is there such a huge speed difference between cPickle.dump( ... f) and f.write(cPickle.dumps(...)) ?