GNOME Bugzilla – Bug 333776
huge update latency
Last modified: 2006-03-09 10:59:14 UTC
I know that recently some timeouts were changed in vte which resulted in a much higher throughput (that is, cat'ing an extremely huge file is now much faster). NEWS says: 0.11.18 - Limit redrawings to a maximum of 40fps. Makes vte run about three times faster. but then minor modifications were also made. Currently, as of 0.11.20, in src/vte.c line 231 the interval between updates is set to as many milliseconds as the number of rows of the terminal. For the standard 80x25 size this yields in 40 fps and everything is fine. However, there's a serious regression in interactive work (e.g. text editing) if the terminal is much taller. If I say "joe sometextfile" and hold the right arrow in a 80x25 terminal, the cursor smoothly, continuously goes to the right. However, if I maximize my terminal (it will be 61 lines high with a quite big font on my 1280x1024 desktop, I bet many people use even taller terminals) then it will be updated with at most 1000/61 = 16.4 FPS. As a result, when I hold the right arrow, my cursor seems to jump approximately 2 character cells at once. It looks somehow disturbing. Other possible examples include pressing and holding the up or down arrow in mc, scrolling a manual page in a maximized gnome-terminal etc., the regression is easily seen by the eyes. It's hard to explain but I guess if you try it you'll get a feeling. Since #164153 was fixed (in 0.11.14 I guess) I had no problem with vte's performance in any way. This change, however, made it definitely worse for interactive work (though it may be really faster for huge outputs, but it wasn't too slow anyway). I believe that setting a _minimum_ FPS is much more important than throughput. Though I'm not an expert of this topic, I do believe that continuous work in a 16 FPS terminal may easily cause headache or the eye may get tired much earlier, similarly to CRT monitors running on 60Hz and stuff like that. It's simply not good to the eye if it doesn't see things moving continuously. I attach a patch which sets the attanded FPS to at least 40. I've been intensively using vte with this patch in the last few weeks, and it seemed to be perfect for me. Of course a "cat bigfile" is slower than without this patch, but I'm pretty sure that it's much less important than how fast small changes appear on the screen. A better solution to both speed issues would be to adapt the FPS depending on the intensity of changes. If a bigger file is being cat'ed then FPS could drop to 10 or 20 fps, I really don't mind. However, if the intensity of output doesn't exceed a few screenfuls per second, as in the case of most interactive software, then it should go back to around 50 fps or maybe even more.
Created attachment 60849 [details] [review] update with at least 40 fps
I completely agree with your report. I knew I should not make that change... Sorry about that. Regardless, some of the problem is cause by bug 161342. I'll try to get permission (we are in code freeze now) and revert that change before GNOME 2.14. I'll simply go for 40fps unconditionally.
2006-03-08 Behdad Esfahbod <behdad@gnome.org> * src/vte.c, src/vte-private.h: Fix vte_update_timeout repeat to 25ms. (bug #333776, Egmont Koblinger)
Thanks!