文字列をn文字ずつに分割する2

id:tkuro:20080716:1216192253のつづき、

わざわざ re を引っ張るような話ではないような。

ごもっとも・・・でした。。文字列スライスの事なぞ頭から飛んでた。唯一の救いはreの方が少し早い事くらい。

NO re版

def checksum_nore(buf):
	hex(sum([int(x+y,16) for x,y in zip(buf[0::2], buf[1::2])]))

re版

def checksum(buf):
	hex(sum([int(x,16) for x in re.findall("..", buf)]))

profile結果

profile採って見た。MacBook 2GHz Core2Duo, データセットは800KB。

tottime cumtime filename:lineno(function)
0.416 0.748 checksum.py:4(checksum_nore)
0.288 0.484 checksum.py:18(checksum)

noreはzipがtuple吐いてるのが重いのと、そこからさらに連結作業が入るせいかな。

        1    0.295    0.295    0.295    0.295 :0(zip)
        1    0.157    0.157    0.157    0.157 :0(findall)