Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from cStringIO import StringIO
- from timeit import Timer
- import commands, os
- from sys import argv
- def method1():
- global z
- out_str = ''
- for num in xrange(loop_count):
- out_str += `num`
- ps_stats()
- z = out_str
- def method2():
- global z
- from array import array
- char_array = array('c')
- for num in xrange(loop_count):
- char_array.fromstring(`num`)
- ps_stats()
- z = char_array.tostring()
- def method3():
- global z
- str_list = []
- for num in xrange(loop_count):
- str_list.append(`num`)
- out_str = ''.join(str_list)
- ps_stats()
- z = out_str
- def method4():
- global z
- file_str = StringIO()
- for num in xrange(loop_count):
- file_str.write(`num`)
- out_str = file_str.getvalue()
- ps_stats()
- z = out_str
- def method5():
- global z
- out_str = ''.join([`num` for num in xrange(loop_count)])
- ps_stats()
- z = out_str
- def method6():
- global z
- out_str = ''.join(`num` for num in xrange(loop_count))
- ps_stats()
- z = out_str
- def ps_stats():
- global process_size
- ps = commands.getoutput('ps up ' + `pid`)
- process_size = ps.split()[16]
- def call_method():
- global process_size
- global num
- global z
- t = Timer(
- 'z = eval(\'method\' + str(num))()',
- "from __main__ import method" + str(num) + ", num, z")
- print "time: %.2f usec/pass" % (1000000 * t.timeit(number=100)/100)
- print "method", num
- print "output size ", len(z) / 1024, "kb"
- print "process size", process_size, "kb"
- print
- loop_count = 100000
- pid = os.getpid()
- num = 1
- z = ''
- for i in xrange(6):
- num = i+1
- call_method()
- """
- time: 59436.04 usec/pass
- method 1
- output size 477 kb
- process size 5888 kb
- time: 75490.27 usec/pass
- method 2
- output size 477 kb
- process size 6904 kb
- time: 57083.68 usec/pass
- method 3
- output size 477 kb
- process size 13784 kb
- time: 67105.47 usec/pass
- method 4
- output size 477 kb
- process size 6664 kb
- time: 44640.27 usec/pass
- method 5
- output size 477 kb
- process size 13560 kb
- time: 51163.65 usec/pass
- method 6
- output size 477 kb
- process size 13252 kb
- """
Add Comment
Please, Sign In to add comment