Psyco testing feed-back wanted
arigo at ulb.ac.be
Fri Aug 23 15:39:58 CEST 2002
I should have mentioned here that the second Psyco release (0.4.1) is out.
Reminder: it's a C extension module that lets you 'mark' the most
performance-sensitive functions of your programs and seriously accelerates
them. It runs on the unmodified Python interpreters (2.1 or 2.2); only for
Pentium CPUs right now. See details at the end of this message.
I'm looking for feed-back. Psyco works reasonably well; I'd even have a
hard time designing code specifically to break it. (There are a few
documented limitations at http://psyco.sourceforge.net/bugs.html.)
Nevertheless it is a complex bunch of low-level C code. I occasionally run
into subtle special-case bugs (which I have always been able to fully
understand and fix up to now). These bugs could just crash the interpreter
or more subtly lead your programs to give wrong results. However, these
problems should always remain located inside of the functions that you
specifically 'marked', and should be easy to discover by testing, given
that Psyco should never behave differently on small or large data inputs.
So it is safe to say that you should definitely try it :-) I would
appreciate any feed-back. Any Python code that causes incorrect behavior
with Psyco would be most welcome. So far, Psyco has been tested with
numerous small utilities and with Python's regression tests; it needs some
larger real-world long-running tests, if only to make sure that its memory
use never grows unboundedly.
Home page: http://psyco.sourceforge.net. New in this version are the
support for almost all the "internal system" functions, e.g.
sys.exc_info(), sys._getframe()... It means that you can use Psyco for
just-in-time specialization and compilation of almost any code.
* acceleration factors are again typically between 2x and 10x or more;
* the memory overhead for compiled code has been considerably reduced;
* also reduced is the 'apparent pause' of programs at start-up due to
* don't use 'psyco.jit()'; use 'psyco.bind()' or 'psyco.proxy()'.
* don't overlook the documentation in file 'psyco/__init__.py'.
More information about the Python-list