On 6/13/07, ocean <[EMAIL PROTECTED]> wrote: > > Meanwhile I tried to replace the parsing I did with Plex by re.Scanner. > And > > again there is a remarkable speed difference. Again python2.5 is slower: > > > > try: > > from re import Scanner > > except: > > from sre import Scanner > > > > pars = {} > > order = [] > > count = 0 > > > > def par(scanner,name): > > global count, order, pars > > > > if name in ['caller','e','pi']: > > return name > > if name not in pars.keys(): > > pars[name] = ('ns', count) > > order.append(name) > > ret = 'a[%d]'%count > > count += 1 > > else: > > ret = 'a[%d]'%(order.index(name)) > > return ret > > > > scanner = Scanner([ > > (r"x", lambda y,x: x), > > (r"[a-zA-Z]+\.", lambda y,x: x), > > (r"[a-z]+\(", lambda y,x: x), > > (r"[a-zA-Z_]\w*", par), > > (r"\d+\.\d*", lambda y,x: x), > > (r"\d+", lambda y,x: x), > > (r"\+|-|\*|/", lambda y,x: x), > > (r"\s+", None), > > (r"\)+", lambda y,x: x), > > (r"\(+", lambda y,x: x), > > (r",", lambda y,x: x), > > ]) > > > > import profile > > import pstats > > > > def run(): > > arg = '+amp*exp(-(x-pos)/fwhm)' > > for i in range(100): > > scanner.scan(arg) > > > > profile.run('run()','profscanner') > > p = pstats.Stats('profscanner') > > p.strip_dirs() > > p.sort_stats('cumulative') > > p.print_stats() > > Well, I tried this script, there was no big difference. > Python2.4 0.772sec > Python2.5 0.816sec > > Probably I found one reason comparation for classic style class is slower on > Python2.5. > Comparation function instance_compare() calls PyErr_GivenExceptionMatches(), > and it was just flag operation on 2.4. But on 2.5, probably related to > introduction of BaseException, > it checks inherited type tuple. (ie: PyExceptionInstance_Check)
I'm curious about the speed of 2.6 (trunk). I think this should have become faster due to the introduction of fast subtype checks (he says without looking at the code). n _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com