vte performance issues ...



Hi there,

	I'm a big fan of having a working, internationalised terminal - but I'm
extremely concerned about it's performance. It's a very real issue -
just doing a simple build of nautilus I get circumstances where more
time is spent rendering the terminal than doing real work:


  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 1409 michael   16   0 44352  36M  7496 R    55.3 14.5   3:01
gnome-terminal
18857 michael   11   0  4988 4988   764 R     8.9  1.9   0:00 ld
18022 michael    9   0  2228 2228   860 S     5.9  0.8   0:00 sh

	[ ok so perhaps this is some IO bound thing but ... ], and incidentally
that's with GDK_USE_XFT=0, a futher export of VTE_USE_PANGO=0 seems to
take this percentage somewhat lower to ~15% or so.

	It's pretty easy to repeat the problem; just do a ls -R / and it
occurs; - possibly this is scrollback related - I use 5000 lines of
scrollback; but I imagine it's more likely due to using pango to render
a character at a time with attributed text. [ cf. vte.c:~10570 ].

	Worse than this - it seems very much as if the rendering is tied to the
incoming text stream, ie. it's not possible for text to come in without
being rendered; this it seems has the unfortunate side effect of
throttling the system to the rendering time of the vte widget. I'm
guessing this is the case because while doing a ls -R / the terminal
stops being interactive.

	Furthermore, even when the widget is not on the screen - and we should
(presumably) be getting no expose events - it is still chewing CPU at a
rate of knots - rendering the text for no-one to see.

	Finally my rough profiling shows that the functions hammering the CPU
are:

vte_terminal_draw_chars's
	pango_x_render_layout, and
	pango_layout_set_attributes
	
	And to conclude - it's great to have an i18n-able terminal, but my
experience with it has been like wading through treacle: extraordinarily
frustrating.

	Regards,

		Michael.

-- 
 mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]