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

Reply via email to