from io import BytesIO from cStringIO import StringIO from six import BytesIO as six_BytesIO data_small = b'foo'*1000 data_large = b'foo'*1000000 %timeit -n 100000 BytesIO(data_small) %timeit -n 100000 StringIO(data_small) %timeit -n 100000 six_BytesIO(data_small) %timeit -n 100000 BytesIO(data_large) %timeit -n 100000 StringIO(data_large) %timeit -n 100000 six_BytesIO(data_large) bio_small = BytesIO(data_small) sio_small = StringIO(data_small) six_small = six_BytesIO(data_small) bio_large = BytesIO(data_large) sio_large = StringIO(data_large) six_large = six_BytesIO(data_large) bio_small.seek(0) sio_small.seek(0) six_small.seek(0) %timeit -n 1000 bio_small.read(1) %timeit -n 1000 sio_small.read(1) %timeit -n 1000 six_small.read(1) %timeit -n 100000 bio_large.read(1) %timeit -n 100000 sio_large.read(1) %timeit -n 100000 six_large.read(1) bio_small.seek(0) sio_small.seek(0) six_small.seek(0) bio_large.seek(0) sio_large.seek(0) six_large.seek(0) %timeit -n 100 bio_small.read(10) %timeit -n 100 sio_small.read(10) %timeit -n 100 six_small.read(10) %timeit -n 100 bio_large.read(1000) %timeit -n 100 sio_large.read(1000) %timeit -n 100 six_large.read(1000)