The latest code in subversion has some major performance improvements. Here are some of the numbers I got when running bench_1 and bench_2:

bench_1
-------
trunk r67:  24% faster than 0.9.7.2
trunk r67 + rbreu-cmodule:  50% faster than 0.9.7.2

bench_2
-------
trunk r67: 135% faster than 0.9.7.2
trunk r67 + rbreu-cmodule: 150% faster than 0.9.7.2

Keep in mind that 0.9.7.2 is much faster than all the 0.9 releases before it.

Also, the latest profiler results suggest that caching the column widths in the Columns widget might be worthwhile.


.. So, what has changed?

I've added a CompositeCanvas class that now handles all the AttrWrap-applying and Canvas-combining operations. The old Canvas class is now only used to store static text and attributes rendered from Text widgets, so that they can be cached and reused.

Caching is performed by a new CanvasCache class that uses weak references to the Canvas objects. The display modules will now keep a reference to the last CompositeCanvas that was used to render the screen in order to keep the Canvas objects alive in the cache while a new screen is being rendered.

These changes make use of features that are not available in Python 2.1, so this release requires Python 2.2 or higher. I think this is a pretty conservative change, since Python 2.2 *has* been available for 5 years now.


Comments, suggestions and bug reports are always welcome.

Ian


_______________________________________________
Urwid mailing list
[email protected]
http://lists.excess.org/mailman/listinfo/urwid

Reply via email to