(c)pickle uses a string protocol by default which is the most portable (even across Python versions and platforms). You need to specify another protocol version for best performance. See http://docs.python.org/library/pickle.html#data-stream-forma...
The times should be similar to lwpb then.
Edit2: Oh, and for JSON you should use http://pypi.python.org/pypi/simplejson