[Urwid] Optimize urwid - cutable benchmarks

Ian Ward ian at excess.org
Tue Jan 2 11:37:15 EST 2007


Rebecca Breu wrote:
> Check the attachment out. :)
> 
> It contains an implementation of
> 
>   * get_width
>   * decode_one
>   * decode_one_right
> 
> in utable.py (as in urwid version 0.9.7.1).
> 
> It seems to work fine with test_urwid and the example programs, but I din't
> test it very thouroughly.
> 
> I started on util.py as well, but I haven't had time to finish it yet.
> 

Here are my bench_1 results (different computer this time):
0.9.7.1:
   Minimum: 9.588382

0.9.7.1 with cutable:
   Minimum: 7.828077
   ~ 22% improvement


development version with my patch:
   Minimum: 3.201065

development version with my patch and cutable:
   Minimum: 3.070312
   ~ 4% improvement

But that's with my patch that avoids calling get_width and decode_one 
when a SAFE_ASCII regular expression of "safe" characters matches the 
string.


development version without SAFE_ASCII_RE:
   Minimum: 8.828370

development version without SAFE_ASCII_RE, with cutable:
   Minimum: 7.279629
   ~ 21% improvement


I think that if we have a C version of util.calc_width we could have 
speed like the development version with SAFE_ASCII_RE but for *all* 
unicode strings.

Rebecca: Since it's just a few of the functions in util.py that need to 
be rewritten in C feel free to move those functions to utable.c if 
that's easier.

Ian




More information about the Urwid mailing list