import os import tempfile import shutil import time import sys from gzip import GzipFile from random import randint from array import array from itertools import izip def log_line(): chars = array('B', [randint(32,127) for _ in xrange(randint(40,120))]) return '[%s] %s\n' % (time.ctime(), chars.tostring()) def main(lines=10000, repeat=10): outdir = tempfile.mkdtemp() try: print 'writing test file...', sys.stdout.flush() t = time.time() fn = os.path.join(outdir, 'gzipbench.gz') outfile = GzipFile(fn, 'wb') log_lines = [log_line() for x in xrange(lines)] outfile.writelines(log_lines) outfile.close() print '%.2f sec' % (time.time() - t,) print 'reading test file...', sys.stdout.flush() t = time.time() for i in xrange(repeat): infile = GzipFile(fn) lines = 0 for test, orig in izip(infile, log_lines): lines += 1 assert test == orig assert lines == len(log_lines) print '%.2f sec' % (time.time() - t,) finally: shutil.rmtree(outdir) if __name__ == '__main__': main()