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 plex_test2.py > 0.710999965668 > > E:\Plex-1.1.5>py25 plex_test2.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 plex_test2.py > 0.401000022888 > > E:\Plex-1.1.5>py25 plex_test2.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 _______________________________________________ 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