George Sakkis <[EMAIL PROTECTED]> wrote: > It has to do with the input string length; try multiplying it by 10 or > 100. Below is a more complete benchmark; for largish strings, the imap > version is the fastest among those using the original algorithm. Of > course using a lookup table as Diez showed is even faster. FWIW, here > are some timings (Python 2.5, WinXP): > > scramble: 1.818 > scramble_listcomp: 1.492 > scramble_gencomp: 1.535 > scramble_map: 1.377 > scramble_imap: 1.332 > scramble_dict: 0.817 > scramble_dict_map: 0.419 > scramble_dict_imap: 0.410
I added another one: import string scramble_translation = string.maketrans(''.join(chr(i) for i in xrange (256)), ''.join(chr(i|0x80) for i in xrange(256))) def scramble_translate(line): return string.translate(line, scramble_translation) ... funcs = [scramble, scramble_listcomp, scramble_gencomp, scramble_map, scramble_imap, scramble_dict, scramble_dict_map, scramble_dict_imap, scramble_translate ] and I think I win: scramble: 1.949 scramble_listcomp: 1.439 scramble_gencomp: 1.455 scramble_map: 1.470 scramble_imap: 1.546 scramble_dict: 0.914 scramble_dict_map: 0.415 scramble_dict_imap: 0.416 scramble_translate: 0.007 -- http://mail.python.org/mailman/listinfo/python-list