[Urwid] Unbearable slowness in UTF-8 mode

Ian Ward ian at excess.org
Wed Oct 11 12:19:24 EDT 2006


Nuutti Kotivuori wrote:
> I did some tracing of the problem and discovered that
> urwid.util.calc_width function was what caused the performance
> difference - calculation of actual text widths in utf8 is obviously
> much harder to do than in normal 8-bit encodings. By forcing the
> calc_width function to use the same method of calculating widths as
> with ASCII, the performance problems went away.
> 
> In any case, this slowness is a showstopper for me - and I'm wondering
> what would be the best way to optimize this.

A workaround is to call urwid.set_encoding('ascii'), but that's not a 
solution.

Currently Urwid redraws all the visible widgets every time you call 
render.  The Text widgets do cache the result of their alignment and 
wrapping, but Urwid might be calling calc_width unnecessarily on text it 
should already know the width of.

Would you post a simple example that demonstrates the problem?

Ian





More information about the Urwid mailing list