import timeit
def timeit_replace(iter):
replace_setup = """
text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
"""
replace_main = """
text.replace('H', '').replace('O', '').replace('G', '').replace('E', '')
"""
print 'replace:',
print timeit.timeit(replace_main, replace_setup, number = iter)
def timeit_replace_uni(iter):
replace_setup = """
text = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
"""
replace_main = """
text.replace(u'H', u'').replace(u'O', u'').replace(u'G', u'').replace(u'E', u'')
"""
print 'replace(unicode):',
print timeit.timeit(replace_main, replace_setup, number = iter)
def timeit_sub(iter):
sub_setup = """
text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
import re
pattern = re.compile('[HOGE]')
"""
sub_main = """
pattern.sub('', text)
"""
print 'sub:',
print timeit.timeit(sub_main, sub_setup, number = iter)
def timeit_sub_uni(iter):
sub_setup = """
text = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
import re
pattern = re.compile(u'[HOGE]')
"""
sub_main = """
pattern.sub('', text)
"""
print 'sub(unicode):',
print timeit.timeit(sub_main, sub_setup, number = iter)
def timeit_translate(iter):
translate_setup = """
text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
"""
translate_main = """
text.translate(None, 'HOGE')
"""
print 'translate:',
print timeit.timeit(translate_main, translate_setup, number = iter)
def timeit_translate_uni(iter):
translate_uni_setup = """
text = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
delete = {ord(u'H'): None, ord(u'O'): None, ord(u'G'): None, ord(u'E'): None}
"""
translate_uni_main = """
text.translate(delete)
"""
print 'translate(unicode):',
print timeit.timeit(translate_uni_main, translate_uni_setup, number = iter)
if __name__ == '__main__':
timeit_replace(500000)
timeit_sub(500000)
timeit_translate(500000)
timeit_replace_uni(500000)
timeit_sub_uni(500000)
timeit_translate_uni(500000)
aW1wb3J0IHRpbWVpdAoKZGVmIHRpbWVpdF9yZXBsYWNlKGl0ZXIpOgogICAgcmVwbGFjZV9zZXR1cCA9ICIiIgp0ZXh0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwoiIiIKICAgIHJlcGxhY2VfbWFpbiA9ICIiIgp0ZXh0LnJlcGxhY2UoJ0gnLCAnJykucmVwbGFjZSgnTycsICcnKS5yZXBsYWNlKCdHJywgJycpLnJlcGxhY2UoJ0UnLCAnJykKIiIiCiAgICBwcmludCAncmVwbGFjZTonLAogICAgcHJpbnQgdGltZWl0LnRpbWVpdChyZXBsYWNlX21haW4sIHJlcGxhY2Vfc2V0dXAsIG51bWJlciA9IGl0ZXIpCgoKZGVmIHRpbWVpdF9yZXBsYWNlX3VuaShpdGVyKToKICAgIHJlcGxhY2Vfc2V0dXAgPSAiIiIKdGV4dCA9IHUnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCiIiIgogICAgcmVwbGFjZV9tYWluID0gIiIiCnRleHQucmVwbGFjZSh1J0gnLCB1JycpLnJlcGxhY2UodSdPJywgdScnKS5yZXBsYWNlKHUnRycsIHUnJykucmVwbGFjZSh1J0UnLCB1JycpCiIiIgogICAgcHJpbnQgJ3JlcGxhY2UodW5pY29kZSk6JywKICAgIHByaW50IHRpbWVpdC50aW1laXQocmVwbGFjZV9tYWluLCByZXBsYWNlX3NldHVwLCBudW1iZXIgPSBpdGVyKQoKZGVmIHRpbWVpdF9zdWIoaXRlcik6CiAgICBzdWJfc2V0dXAgPSAiIiIKdGV4dCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKaW1wb3J0IHJlCnBhdHRlcm4gPSByZS5jb21waWxlKCdbSE9HRV0nKQoiIiIKICAgIHN1Yl9tYWluID0gIiIiCnBhdHRlcm4uc3ViKCcnLCB0ZXh0KQoiIiIKICAgIHByaW50ICdzdWI6JywKICAgIHByaW50IHRpbWVpdC50aW1laXQoc3ViX21haW4sIHN1Yl9zZXR1cCwgbnVtYmVyID0gaXRlcikKCgpkZWYgdGltZWl0X3N1Yl91bmkoaXRlcik6CiAgICBzdWJfc2V0dXAgPSAiIiIKdGV4dCA9IHUnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCmltcG9ydCByZQpwYXR0ZXJuID0gcmUuY29tcGlsZSh1J1tIT0dFXScpCiIiIgogICAgc3ViX21haW4gPSAiIiIKcGF0dGVybi5zdWIoJycsIHRleHQpCiIiIgogICAgcHJpbnQgJ3N1Yih1bmljb2RlKTonLAogICAgcHJpbnQgdGltZWl0LnRpbWVpdChzdWJfbWFpbiwgc3ViX3NldHVwLCBudW1iZXIgPSBpdGVyKQoKZGVmIHRpbWVpdF90cmFuc2xhdGUoaXRlcik6CiAgICB0cmFuc2xhdGVfc2V0dXAgPSAiIiIKdGV4dCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKIiIiCiAgICB0cmFuc2xhdGVfbWFpbiA9ICIiIgp0ZXh0LnRyYW5zbGF0ZShOb25lLCAnSE9HRScpCiIiIgogICAgcHJpbnQgJ3RyYW5zbGF0ZTonLAogICAgcHJpbnQgdGltZWl0LnRpbWVpdCh0cmFuc2xhdGVfbWFpbiwgdHJhbnNsYXRlX3NldHVwLCBudW1iZXIgPSBpdGVyKQoKZGVmIHRpbWVpdF90cmFuc2xhdGVfdW5pKGl0ZXIpOgogICAgdHJhbnNsYXRlX3VuaV9zZXR1cCA9ICIiIgp0ZXh0ID0gdSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKZGVsZXRlID0ge29yZCh1J0gnKTogTm9uZSwgb3JkKHUnTycpOiBOb25lLCBvcmQodSdHJyk6IE5vbmUsIG9yZCh1J0UnKTogTm9uZX0KIiIiCiAgICB0cmFuc2xhdGVfdW5pX21haW4gPSAiIiIKdGV4dC50cmFuc2xhdGUoZGVsZXRlKQoiIiIKICAgIHByaW50ICd0cmFuc2xhdGUodW5pY29kZSk6JywKICAgIHByaW50IHRpbWVpdC50aW1laXQodHJhbnNsYXRlX3VuaV9tYWluLCB0cmFuc2xhdGVfdW5pX3NldHVwLCBudW1iZXIgPSBpdGVyKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHRpbWVpdF9yZXBsYWNlKDUwMDAwMCkKICAgIHRpbWVpdF9zdWIoNTAwMDAwKQogICAgdGltZWl0X3RyYW5zbGF0ZSg1MDAwMDApCiAgICB0aW1laXRfcmVwbGFjZV91bmkoNTAwMDAwKQogICAgdGltZWl0X3N1Yl91bmkoNTAwMDAwKQogICAgdGltZWl0X3RyYW5zbGF0ZV91bmkoNTAwMDAwKQ==