[Python-Dev] 2.5 slower than 2.4 for some things? (original) (raw)
Christian K ckkart at hoc.net
Wed Jun 13 03:15:38 CEST 2007
- Previous message: [Python-Dev] 2.5 slower than 2.4 for some things?
- Next message: [Python-Dev] 2.5 slower than 2.4 for some things?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
ocean wrote:
I've had a report from a user that Plex runs about half as fast in 2.5 as it did in 2.4. In particular, the NFA-to-DFA conversion phase, which does a lot of messing about with dicts representing mappings between sets of states.
That was me.
Does anyone in the Ministry for Making Python Blazingly fast happen to know of some change that might have pessimised things in this area? Hello, I investigated. On my environment, consumed time is E:\Plex-1.1.5>py24 plextest2.py 0.710999965668 E:\Plex-1.1.5>py25 plextest2.py 0.921999931335 And after I applied this patch to Plex/Machines, (make `Node' new style class) 62c62 < class Node:_ _---_ _class Node(object):_ _E:\Plex-1.1.5>py24 plextest2.py 0.401000022888 E:\Plex-1.1.5>py25 plextest2.py 0.350999832153
Nice!.
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()
Christian
- Previous message: [Python-Dev] 2.5 slower than 2.4 for some things?
- Next message: [Python-Dev] 2.5 slower than 2.4 for some things?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]