On 11/4/2015 3:50 AM, Victor Stinner wrote: > Hi, > > I'm writing a new "FAT Python" project to try to implement optimizations > in CPython (inlining, constant folding, move invariants out of loops, > etc.) using a "static" optimizer (not a JIT). For the background, see > the thread on python-ideas: > https://mail.python.org/pipermail/python-ideas/2015-October/036908.html > > See also the documentation: > https://hg.python.org/sandbox/fatpython/file/tip/FATPYTHON.rst > https://hg.python.org/sandbox/fatpython/file/tip/ASTOPTIMIZER.rst > > I implemented the most basic optimization to test my code: replace calls > to builtin functions (with constant arguments) with the result. For > example, len("abc") is replaced with 3. I reached the second milestone: > it's now possible to run the full Python test suite with these > optimizations enabled. It confirms that the optimizations don't break > the Python semantic. Is the test suite complete enough to say this? (see below) > Example: > --- > >>> def func(): > ... return len("abc") > ... > >>> import dis > >>> dis.dis(func) > 2 0 LOAD_GLOBAL 0 (len) > 3 LOAD_CONST 1 ('abc') > 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) > 9 RETURN_VALUE > > >>> len(func.get_specialized()) > 1 > >>> specialized=func.get_specialized()[0] > >>> dis.dis(specialized['code']) > 2 0 LOAD_CONST 1 (3) > 3 RETURN_VALUE > >>> len(specialized['guards']) > 2 > > >>> func() > 3 > > >>> len=lambda obj: "mock" > >>> func() > 'mock' In particular, does the test suite have tests like this, to verify that over-riding builtins works? > >>> func.get_specialized() > [] > --- -- Terry Jan Reedy
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4