Differences between revisions 1 and 22 (spanning 21 versions)
Revision 1 as of 2006-05-01 22:48:04
Size: 1030
Editor: SteveHolden
Comment:
Revision 22 as of 2006-05-04 16:42:52
Size: 3021
Editor: SteveHolden
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
The following goals were included in the sprint announcement. Please use this area as a staging point to indicate interest in specific goals and discuss possible approaches, recruit support for half-baked ideas and so on. This is a '''''Wiki''''', people! Create new pages at will. '''Sprint topics following the NeedForSpeed theme'''
Line 3: Line 3:
 * Improving the decimal module by implementing portions in C You can add additional topics below. Please discuss the specific goals and possible approaches to these tasks!
Line 5: Line 5:
 * Investigate whether RPython offers sufficient speedup over the regular CPython interpreter to replace tailored C and C++ code in MMP gaming applications = CPython =
 * Evaluate the PEPs for optimizing global and attribute lookups
   [http://www.python.org/dev/peps/pep-0266/ PEP 266],
   [http://www.python.org/dev/peps/pep-0267/ PEP 267],
   and [http://www.python.org/dev/peps/pep-0280/ PEP 280]
Line 7: Line 11:
 * Implement an ordered dictionary in both C and Python  * Can floating point ops be sped-up by avoiding flag/exception checks at every step? Can some floating point ops be in-lined in ceval.c?
Line 9: Line 13:
 * Implement data-structure-specific algorithms, which rely heavily on certain data structures, as RPython  * Implement portions of the decimal module in C
Line 11: Line 15:
 * Adding an iterator interface (similar to re.finditer) to the struct module  * Build-out struct module to support fast, high-volume binary conversions -- perhaps with regexp analogs such struct.compile() and struct.finditer()
Line 13: Line 17:
 * Further refine the PyPy LLVM back end to improve general execution speeds  * Create a string subclass that provides lazy slicing without copying
Line 15: Line 19:
 * Offer the PyPy team a sprint venue to continue their development work on Python implementations written in Python  * Allow selective removal of unused features such as profiling support
Line 17: Line 21:
 * Create a string subtype that provides lazy slicing without copying  * Faster parsing of strings and bytes into int, long, etc.

 * Buffer for use with network I/O

 * Build-out the collections module for optimized data structures:
   * ordered dictionary
   * alternate list implementation optimized for fast insertion and deletion
   * red/black tree
   * pivot tables
   * skip list

 * Create a 64 bit PyInt type (for 32 bit machines)

 * Optimize methods in stringobject.c

 * Add itertools.imerge() and itertools.izip_longest()

 * Guido has a standing request to have threading.py written in C

 * Revisit Armin's zombie frame idea for reducing function call overhead. IIRC, the unsolved problem was how to save partially constructed frames without impacting the performance of recursive functions.


= Pure Python Projects =

 * Improve [http://dada.perl.it/shootout/python.html language shootout] submissions

 * Improve the API for timeit.py. Guido thinks that much of the intelligence in the command-line interface should be shifted to importable functions.

 * Update PythonSpeed/PerformanceTips


= Twisted =

 * Speed improvements to select and poll reactors

 * Reactor based on /dev/epoll

 * Better integration with psyco

 * Improvements against twisted benchmark


= Psyco =
 * Support for generator expressions
 * Support for nested scopes
 * Support for more dictionary operations
 * Speedup float arithmetic
 * Support for more built-ins (e.g. int(), long(), float(), etc.)
 * Upgrade for python 2.5
 * Better tools for profiling psyco-ness of application
 * Investigate usefulness of IVM (with aim to producing a more streamlined dispatch loop)
 * LLVM backend
 * Virtualized longs (for long longs)
 * Virtualized slots (Ability to cache __getattribute__() values)

= PyPy =
 * Compiling RPython modules into CPython extension modules
 * Port modules to use ctypes instead of having them written in C
 * Stackless PyPy (pickling running tasklets)
 * Documentation
 * LLVM backend
 * JIT compiler (possibly)

= Py3000 =
 * Make a wishlist for possible performance gains in Py3.0

Sprint topics following the NeedForSpeed theme

You can add additional topics below. Please discuss the specific goals and possible approaches to these tasks!

CPython

  • Evaluate the PEPs for optimizing global and attribute lookups
  • Can floating point ops be sped-up by avoiding flag/exception checks at every step? Can some floating point ops be in-lined in ceval.c?
  • Implement portions of the decimal module in C
  • Build-out struct module to support fast, high-volume binary conversions -- perhaps with regexp analogs such struct.compile() and struct.finditer()
  • Create a string subclass that provides lazy slicing without copying
  • Allow selective removal of unused features such as profiling support
  • Faster parsing of strings and bytes into int, long, etc.
  • Buffer for use with network I/O
  • Build-out the collections module for optimized data structures:
    • ordered dictionary
    • alternate list implementation optimized for fast insertion and deletion
    • red/black tree
    • pivot tables
    • skip list
  • Create a 64 bit PyInt type (for 32 bit machines)

  • Optimize methods in stringobject.c
  • Add itertools.imerge() and itertools.izip_longest()
  • Guido has a standing request to have threading.py written in C
  • Revisit Armin's zombie frame idea for reducing function call overhead. IIRC, the unsolved problem was how to save partially constructed frames without impacting the performance of recursive functions.

Pure Python Projects

Twisted

  • Speed improvements to select and poll reactors
  • Reactor based on /dev/epoll
  • Better integration with psyco
  • Improvements against twisted benchmark

Psyco

  • Support for generator expressions
  • Support for nested scopes
  • Support for more dictionary operations
  • Speedup float arithmetic
  • Support for more built-ins (e.g. int(), long(), float(), etc.)
  • Upgrade for python 2.5
  • Better tools for profiling psyco-ness of application
  • Investigate usefulness of IVM (with aim to producing a more streamlined dispatch loop)
  • LLVM backend
  • Virtualized longs (for long longs)
  • Virtualized slots (Ability to cache getattribute() values)

PyPy

  • Compiling RPython modules into CPython extension modules
  • Port modules to use ctypes instead of having them written in C
  • Stackless PyPy (pickling running tasklets)

  • Documentation
  • LLVM backend
  • JIT compiler (possibly)

Py3000

  • Make a wishlist for possible performance gains in Py3.0

NeedForSpeed/Goals (last edited 2008-11-15 13:59:37 by localhost)

Unable to edit the page? See the FrontPage for instructions.