[Xcb] gtk-xcb performance profiling

Barton C Massey bart at cs.pdx.edu
Wed Nov 8 09:56:30 PST 2006


I saw the email; is there something wrong with the email list?

Anyway, thanks much for the numbers.  They don't differ by
much. :-) Do try either setting Xlib's buffer smaller via
the environment variable, or recompiling XCB with a bigger
buffer.  I think you'll find much of the difference goes
away...

	Bart

In message <934b4cdf0611080531o1989ba44n51b3c4db72ff860a at mail.gmail.com> you wrote:
> Hi Bart,
> 
> I have used oprofile to test the performance both gtk-xcb and gtk-x11, and
> replied all the information to you, but it seems the mail haven't arrived to
> the archive. I also CCed it to gtk-devel-list at gnome.org, so you can get it
> at
> http://mail.gnome.org/archives/gtk-devel-list/2006-November/msg00035.html
> 
> --Jianjun
> 
> On 11/8/06, Barton C Massey <bart at cs.pdx.edu> wrote:
> >
> > This is terrific news!
> >
> > We will definitely try to help you look at the bugs,
> > although it will probably be next week rather than this one
> > for me at least.
> >
> > Can you give us more details about the performance
> > difference?  Even if your numbers aren't solid, they let us
> > know the impacts and where to look for optimizations.
> >
> > Thanks much!
> >
> >     Bart Massey
> >     Assoc. Prof. Computer Science
> >     Portland State University
> >     bart at cs.pdx.edu
> >
> >
> > In message <934b4cdf0611070419q51ffb9c9v18f430883c79b5fc at mail.gmail.com>
> > you wrote:
> > > --===============1611316647==
> > > Content-Type: multipart/alternative;
> > >       boundary="----=_Part_3287_26332206.1162901941431"
> > >
> > > ------=_Part_3287_26332206.1162901941431
> > > Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> > > Content-Transfer-Encoding: 7bit
> > > Content-Disposition: inline
> > >
> > > I am always working on the xcb port of gtk. So far most common gtk
> > > applications can run well atop the gdk-xcb backend. As the dependency of
> > > gtk, Pango and Xft are ported as well.
> > >
> > > These XCB backends are built on the 1.0 RC3 (0.9.93) release of
> > xcb-proto
> > > and libxcb(http://xcb.freedesktop.org/dist/), as well as the latest
> > > development version of
> > xcb-util(git://anongit.freedesktop.org/git/xcb/util).
> > > Maybe the utility libraries are unstable, but I have employed it.
> > >
> > > These XCB backends are not built by default, and you must explicitly use
> > the
> > > configuration option:
> > >  * Xft: --enable-xcb
> > >  * pango: --enable-xcb
> > >  * gtk: --with-gdktarget=xcb
> > >
> > > You can get all my xcb-porting work from  "
> > > http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/" , then try to build
> > > them. If all works well, you can get libgtk-xcb-2.0.so and
> > > libgdk-xcb-2.0.sofinally.
> > >
> > > GTK-XCB is now entirely XCB based, claiming the full benefits of XCB. I
> > have
> > > not taken codes sharing into account between the two X backends, perhaps
> > it
> > > brings a huge maintenance burden, maintaining two copies of that that
> > differ
> > > only in their interface to the X protocol.
> > >
> > > I have used gtkperf to test the gdk-xcb performance on PC, but the
> > benchmark
> > > data shows gdk-xcb is a bit slow than gdk-x11 :(
> > >
> > > Followings are the next steps :
> > >
> > > * event handling
> > > There is still a bug in window redraw. Originally the area in window
> > does
> > > redraw when its window content is fully visible after the overlapping
> > window
> > > disappear. But if you repeat to  make the window partially obscured, and
> > > fully visible many times, the area then does not redraw any more.
> > >
> > > * error handling.
> > > Build a library atop libxcb to provide such functions as
> > XSetErrorHandler
> > > and XSetIOErrorHandler.
> > >
> > > * Key handling.
> > > Rewrite XKeysymToString and XStringToKeysym in a library built on XCB,
> > to
> > > provide the transformation between keyname and keyvalue.
> > >
> > > * GC contents caches
> > > XCB does not cache the GC contents on client-side. Maybe should I cache
> > the
> > > gc values in gdk-xcb backend to implement gdk_gc_get_values?
> > > Anyway, I'd appreciate any advice/pointers you could provide, poking at
> > the
> > > gdk-xcb backends.
> > >
> > > Jianjun
> > >
> > > ------=_Part_3287_26332206.1162901941431
> > > Content-Type: text/html; charset=ISO-8859-1
> > > Content-Transfer-Encoding: 7bit
> > > Content-Disposition: inline
> > >
> > > <div>&nbsp;</div>
> > > <div>I am always working on the xcb port of gtk. So far most common gtk
> > applications can run well atop the gdk-xcb backend. As the dependency of
> > gtk, Pango and Xft are ported as well.</div>
> > > <p>These XCB backends are built on the 1.0 RC3 (0.9.93) release of
> > xcb-proto and libxcb(<a href="http://xcb.freedesktop.org/dist/">
> > http://xcb.freedesktop.org/dist/</a>), as well as the latest development
> > version of xcb-util(git://anongit.freedesktop.org/git/xcb/util). Maybe the
> > utility libraries are unstable, but I have employed it.
> > > </p>
> > > <p>These XCB backends are not built by default, and you must explicitly
> > use the configuration option:<br>&nbsp;* Xft:&nbsp;--enable-xcb<br>&nbsp;*
> > pango:&nbsp;--enable-xcb<br>&nbsp;* gtk:&nbsp;--with-gdktarget=xcb</p>
> > > <p>You can get all my xcb-porting work from&nbsp; &quot;<a href="
> > http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/">
> > http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/</a>&quot; , then try to
> > build them. If all works well, you can get
> > > <a href="http://libgtk-xcb-2.0.so">libgtk-xcb-2.0.so</a> and <a href="
> > http://libgdk-xcb-2.0.so">libgdk-xcb-2.0.so</a> finally.</p>
> > > <p>GTK-XCB is now entirely XCB based, claiming the full benefits of XCB.
> > I have not taken codes sharing into account between the two X backends,
> > perhaps it brings a huge maintenance burden, maintaining two copies of that
> > that differ only in their interface to the X protocol.
> > > </p>
> > > <p>I have used gtkperf to test the gdk-xcb performance on PC, but the
> > benchmark data shows gdk-xcb is a bit slow than gdk-x11 :(</p>
> > > <p>Followings are the next steps :</p>
> > > <p>* event handling<br>There is still a bug in window redraw. Originally
> > the area in window does redraw when its window content is fully visible
> > after the overlapping window disappear. But if you repeat to&nbsp; make the
> > window partially obscured, and&nbsp; fully visible many times, the area then
> > does not redraw any more.
> > > </p>
> > > <p>* error handling. <br>Build a library atop libxcb to provide such
> > functions as XSetErrorHandler and XSetIOErrorHandler.</p>
> > > <p>* Key handling.&nbsp;<br>Rewrite XKeysymToString and XStringToKeysym
> > in a library built on XCB, to provide the transformation between keyname and
> > keyvalue.</p>
> > > <p>* GC contents caches <br>XCB does not cache the GC contents on
> > client-side. Maybe should I cache the gc values in gdk-xcb backend to
> > implement gdk_gc_get_values?</p>
> > > <div>Anyway, I'd appreciate any advice/pointers you could provide,
> > poking at the gdk-xcb backends.</div>
> > > <div>&nbsp;</div>
> > > <div>Jianjun<br>&nbsp;</div>
> > >
> > > ------=_Part_3287_26332206.1162901941431--
> > >
> > > --===============1611316647==
> > > Content-Type: text/plain; charset="us-ascii"
> > > MIME-Version: 1.0
> > > Content-Transfer-Encoding: 7bit
> > > Content-Disposition: inline
> > >
> > > _______________________________________________
> > > Xcb mailing list
> > > Xcb at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/xcb
> > > --===============1611316647==--
> >
> 
> ------=_Part_18069_27502294.1162992668664
> Content-Type: text/html; charset=ISO-8859-1
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline
> 
> Hi Bart,<br><br>I have used oprofile to test the performance both gtk-xcb and gtk-x11, and replied all the information to you, but it seems the mail haven't arrived to the archive. I also CCed it to <a href="mailto:gtk-devel-list at gnome.org">
> gtk-devel-list at gnome.org</a>, so you can get it at <br><a href="http://mail.gnome.org/archives/gtk-devel-list/2006-November/msg00035.html">http://mail.gnome.org/archives/gtk-devel-list/2006-November/msg00035.html</a><br><br>
> --Jianjun<br><br><div><span class="gmail_quote">On 11/8/06, <b class="gmail_sendername">Barton C Massey</b> &lt;<a href="mailto:bart at cs.pdx.edu">bart at cs.pdx.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
> This is terrific news!<br><br>We will definitely try to help you look at the bugs,<br>although it will probably be next week rather than this one<br>for me at least.<br><br>Can you give us more details about the performance
> <br>difference?&nbsp;&nbsp;Even if your numbers aren't solid, they let us<br>know the impacts and where to look for optimizations.<br><br>Thanks much!<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Bart Massey<br>&nbsp;&nbsp;&nbsp;&nbsp;Assoc. Prof. Computer Science<br>&nbsp;&nbsp;&nbsp;&nbsp;Portland State University
> <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:bart at cs.pdx.edu">bart at cs.pdx.edu</a><br><br><br>In message &lt;<a href="mailto:934b4cdf0611070419q51ffb9c9v18f430883c79b5fc at mail.gmail.com">934b4cdf0611070419q51ffb9c9v18f430883c79b5fc at mail.gmail.com
> </a>&gt; you wrote:<br>&gt; --===============1611316647==<br>&gt; Content-Type: multipart/alternative;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boundary=&quot;----=_Part_3287_26332206.1162901941431&quot;<br>&gt;<br>&gt; ------=_Part_3287_26332206.1162901941431
> <br>&gt; Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>&gt; Content-Transfer-Encoding: 7bit<br>&gt; Content-Disposition: inline<br>&gt;<br>&gt; I am always working on the xcb port of gtk. So far most common gtk
> <br>&gt; applications can run well atop the gdk-xcb backend. As the dependency of<br>&gt; gtk, Pango and Xft are ported as well.<br>&gt;<br>&gt; These XCB backends are built on the 1.0 RC3 (0.9.93) release of xcb-proto<br>
> &gt; and libxcb(<a href="http://xcb.freedesktop.org/dist/">http://xcb.freedesktop.org/dist/</a>), as well as the latest<br>&gt; development version of xcb-util(git://anongit.freedesktop.org/git/xcb/util).<br>&gt; Maybe the utility libraries are unstable, but I have employed it.
> <br>&gt;<br>&gt; These XCB backends are not built by default, and you must explicitly use the<br>&gt; configuration option:<br>&gt;&nbsp;&nbsp;* Xft: --enable-xcb<br>&gt;&nbsp;&nbsp;* pango: --enable-xcb<br>&gt;&nbsp;&nbsp;* gtk: --with-gdktarget=xcb<br>
> &gt;<br>&gt; You can get all my xcb-porting work from&nbsp;&nbsp;&quot;<br>&gt; <a href="http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/">http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/</a>&quot; , then try to build<br>&gt; them. If all works well, you can get 
> <a href="http://libgtk-xcb-2.0.so">libgtk-xcb-2.0.so</a> and<br>&gt; libgdk-xcb-2.0.sofinally.<br>&gt;<br>&gt; GTK-XCB is now entirely XCB based, claiming the full benefits of XCB. I have<br>&gt; not taken codes sharing into account between the two X backends, perhaps it
> <br>&gt; brings a huge maintenance burden, maintaining two copies of that that differ<br>&gt; only in their interface to the X protocol.<br>&gt;<br>&gt; I have used gtkperf to test the gdk-xcb performance on PC, but the benchmark
> <br>&gt; data shows gdk-xcb is a bit slow than gdk-x11 :(<br>&gt;<br>&gt; Followings are the next steps :<br>&gt;<br>&gt; * event handling<br>&gt; There is still a bug in window redraw. Originally the area in window does<br>
> &gt; redraw when its window content is fully visible after the overlapping window<br>&gt; disappear. But if you repeat to&nbsp;&nbsp;make the window partially obscured, and<br>&gt; fully visible many times, the area then does not redraw any more.
> <br>&gt;<br>&gt; * error handling.<br>&gt; Build a library atop libxcb to provide such functions as XSetErrorHandler<br>&gt; and XSetIOErrorHandler.<br>&gt;<br>&gt; * Key handling.<br>&gt; Rewrite XKeysymToString and XStringToKeysym in a library built on XCB, to
> <br>&gt; provide the transformation between keyname and keyvalue.<br>&gt;<br>&gt; * GC contents caches<br>&gt; XCB does not cache the GC contents on client-side. Maybe should I cache the<br>&gt; gc values in gdk-xcb backend to implement gdk_gc_get_values?
> <br>&gt; Anyway, I'd appreciate any advice/pointers you could provide, poking at the<br>&gt; gdk-xcb backends.<br>&gt;<br>&gt; Jianjun<br>&gt;<br>&gt; ------=_Part_3287_26332206.1162901941431<br>&gt; Content-Type: text/html; charset=ISO-8859-1
> <br>&gt; Content-Transfer-Encoding: 7bit<br>&gt; Content-Disposition: inline<br>&gt;<br>&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;<br>&gt; &lt;div&gt;I am always working on the xcb port of gtk. So far most common gtk applications can run well atop the gdk-xcb backend. As the dependency of gtk, Pango and Xft are ported as well.&lt;/div&gt;
> <br>&gt; &lt;p&gt;These XCB backends are built on the 1.0 RC3 (0.9.93) release of xcb-proto and libxcb(&lt;a href=&quot;<a href="http://xcb.freedesktop.org/dist/">http://xcb.freedesktop.org/dist/</a>&quot;&gt;<a href="http://xcb.freedesktop.org/dist/">
> http://xcb.freedesktop.org/dist/</a>&lt;/a&gt;), as well as the latest development version of xcb-util(git://anongit.freedesktop.org/git/xcb/util). Maybe the utility libraries are unstable, but I have employed it.<br>&gt; &lt;/p&gt;
> <br>&gt; &lt;p&gt;These XCB backends are not built by default, and you must explicitly use the configuration option:&lt;br&gt;&amp;nbsp;* Xft:&amp;nbsp;--enable-xcb&lt;br&gt;&amp;nbsp;* pango:&amp;nbsp;--enable-xcb&lt;br&gt;&amp;nbsp;* gtk:&amp;nbsp;--with-gdktarget=xcb&lt;/p&gt;
> <br>&gt; &lt;p&gt;You can get all my xcb-porting work from&amp;nbsp; &amp;quot;&lt;a href=&quot;<a href="http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/">http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/</a>&quot;&gt;
> <a href="http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/">http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/</a>&lt;/a&gt;&amp;quot; , then try to build them. If all works well, you can get<br>&gt; &lt;a href=&quot;<a href="http://libgtk-xcb-2.0.so">
> http://libgtk-xcb-2.0.so</a>&quot;&gt;<a href="http://libgtk-xcb-2.0.so">libgtk-xcb-2.0.so</a>&lt;/a&gt; and &lt;a href=&quot;<a href="http://libgdk-xcb-2.0.so">http://libgdk-xcb-2.0.so</a>&quot;&gt;<a href="http://libgdk-xcb-2.0.so">
> libgdk-xcb-2.0.so</a>&lt;/a&gt; finally.&lt;/p&gt;<br>&gt; &lt;p&gt;GTK-XCB is now entirely XCB based, claiming the full benefits of XCB. I have not taken codes sharing into account between the two X backends, perhaps it brings a huge maintenance burden, maintaining two copies of that that differ only in their interface to the X protocol.
> <br>&gt; &lt;/p&gt;<br>&gt; &lt;p&gt;I have used gtkperf to test the gdk-xcb performance on PC, but the benchmark data shows gdk-xcb is a bit slow than gdk-x11 :(&lt;/p&gt;<br>&gt; &lt;p&gt;Followings are the next steps :&lt;/p&gt;
> <br>&gt; &lt;p&gt;* event handling&lt;br&gt;There is still a bug in window redraw. Originally the area in window does redraw when its window content is fully visible after the overlapping window disappear. But if you repeat to&amp;nbsp; make the window partially obscured, and&amp;nbsp; fully visible many times, the area then does not redraw any more.
> <br>&gt; &lt;/p&gt;<br>&gt; &lt;p&gt;* error handling. &lt;br&gt;Build a library atop libxcb to provide such functions as XSetErrorHandler and XSetIOErrorHandler.&lt;/p&gt;<br>&gt; &lt;p&gt;* Key handling.&amp;nbsp;&lt;br&gt;Rewrite XKeysymToString and XStringToKeysym in a library built on XCB, to provide the transformation between keyname and keyvalue.&lt;/p&gt;
> <br>&gt; &lt;p&gt;* GC contents caches &lt;br&gt;XCB does not cache the GC contents on client-side. Maybe should I cache the gc values in gdk-xcb backend to implement gdk_gc_get_values?&lt;/p&gt;<br>&gt; &lt;div&gt;Anyway, I'd appreciate any advice/pointers you could provide, poking at the gdk-xcb backends.&lt;/div&gt;
> <br>&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;<br>&gt; &lt;div&gt;Jianjun&lt;br&gt;&amp;nbsp;&lt;/div&gt;<br>&gt;<br>&gt; ------=_Part_3287_26332206.1162901941431--<br>&gt;<br>&gt; --===============1611316647==<br>&gt; Content-Type: text/plain; charset=&quot;us-ascii&quot;
> <br>&gt; MIME-Version: 1.0<br>&gt; Content-Transfer-Encoding: 7bit<br>&gt; Content-Disposition: inline<br>&gt;<br>&gt; _______________________________________________<br>&gt; Xcb mailing list<br>&gt; <a href="mailto:Xcb at lists.freedesktop.org">
> Xcb at lists.freedesktop.org</a><br>&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/xcb">http://lists.freedesktop.org/mailman/listinfo/xcb</a><br>&gt; --===============1611316647==--<br></blockquote></div><br>
> 
> ------=_Part_18069_27502294.1162992668664--
> 
> --===============1403479938==
> Content-Type: text/plain; charset="us-ascii"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline
> 
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb
> --===============1403479938==--


More information about the Xcb mailing list