> Where are the attempts to speed up function/method calls? That's an
> area where we could *really* use a breakthrough...

At one time you had entertained treating some of the builtin calls as
fixed.  Is that something you want to go forward with?  It would entail
a "from __future__" and transition period.

It would not be hard to take code like "return len(alist)" and transform
it from:

  2           0 LOAD_GLOBAL              0 (len)
              3 LOAD_FAST                0 (alist)
              6 CALL_FUNCTION            1
              9 RETURN_VALUE      

to:

  2           0 LOAD_FAST                0 (alist)
              3 OBJECT_LEN
              4 RETURN_VALUE      

Some functions already have a custom opcode that cannot be used unless
we freeze the meaning of the function name:  

    repr -->  UNARY_CONVERT --> PyObject_Repr
    iter -->  GET_ITER      --> PyObject_GetIter

Alternately, functions could be served by a table of known, fixed
functions:

  2           0 LOAD_FAST                0 (alist)
              3 CALL_DEDICATED           0 (PyObject_Len)
              6 RETURN_VALUE      

where the dispatch table is something like:  [PyObject_Len,
PyObject_Repr, PyObject_IsInstance, PyObject_IsTrue, PyObject_GetIter,
...].

Of course, none of these offer a big boost and there is some loss of
dynamic behavior.



Raymond
_______________________________________________
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