30 lines
961 B
Python
Executable File
30 lines
961 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from base64 import b64encode, b64decode
|
|
from codecs import (utf_8_encode, utf_8_decode,
|
|
latin_1_encode, latin_1_decode)
|
|
import random, time
|
|
|
|
buf_len = 10000
|
|
iterations = 10000
|
|
|
|
print "Generating random input buffer"
|
|
r = random.Random()
|
|
buf = "".join([chr(r.randint(0, 255)) for i in range(buf_len)])
|
|
|
|
tests = {'UTF8 encode': lambda: utf_8_encode(unicode(buf, 'latin-1'))[0],
|
|
'B64 encode': lambda: b64encode(buf)}
|
|
utf8_buf = tests['UTF8 encode']()
|
|
b64_buf = tests['B64 encode']()
|
|
tests.update({'UTF8 decode': lambda: latin_1_encode(utf_8_decode(utf8_buf)[0])[0],
|
|
'B64 decode': lambda: b64decode(b64_buf)})
|
|
|
|
print "Running tests"
|
|
for test in 'UTF8 encode', 'B64 encode', 'UTF8 decode', 'B64 decode':
|
|
start = time.time()
|
|
for i in range(iterations):
|
|
res_buf = tests[test]()
|
|
print "%s took %s seconds (result size %s)" % (
|
|
test, (time.time() - start), len(res_buf))
|
|
|