Differences between revisions 31 and 32
Revision 31 as of 2006-05-10 23:01:52
Size: 4116
Editor: TimPeters
Comment:
Revision 32 as of 2006-05-10 23:04:17
Size: 4235
Editor: TimPeters
Comment:
Deletions are marked like this. Additions are marked like this.
Line 37: Line 37:

   TimPeters: what does "ordered dictionary" mean? For example, sorted by key value, or sorted by insertion time?

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
    • FredrikLundh: Creating the class is easy, but integrating it into Python is harder (most code that handles e.g. 8-bit strings assume a PyString). For Py3K, it would be quite interesting to "instrument" a Python interpreter, mapping all PyString macros to functions, and gathering some kind of usage statistics.

  • Allow selective removal of unused features such as profiling support
  • Faster parsing of strings and bytes into int, long, etc.
    • TimPeters: part of that is algorithms, and part is the sheer depth of the call stack. There's at least one patch pending to use faster algorithms for conversion of decimal strings to ints/longs. The platform C library converts decimal strings to floats.

  • Buffer for use with network I/O
    • Fredrik Lundh: Also see the stringobject comment below.
  • 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

      TimPeters: what does "ordered dictionary" mean? For example, sorted by key value, or sorted by insertion time?

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

    • FredrikLundh: PyInt64, I hope? Or a configuration option? Or a polymorphic-under-the-hood PyLong type ?

      TimPeters: Guido would probably be happy if "short" Python ints were in fact 64 bits on all boxes; that's come up before.

  • Optimize methods in stringobject.c
    • FredrikLundh: I'd like to work on refactoring the string method implementations into a "polymorphic" (SRE-style) support library for quite some time. This would let us share source code between 8-bit and Unicode strings, and make it easier to reuse code also for future array/buffer/bytes types (etc).

  • 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.
  • Other ideas for speeding up function calls. For example, [http://www.python.org/sf/1479611 patch 1479611].

  • improve gzip's readline performance

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)

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.