RaphaXl Quinet <[EMAIL PROTECTED]> writes:

> This is something that has been bothering me for a while, and maybe I am
> not the only one who has noticed this.  I have compiled the CVS HEAD
> version and the 1.2.3 version on the same old machine (a Pentium 200)
> and the CVS version is significantly slower than the 1.2.x version.  Of
> course, there is a lot of debugging code in 1.3.x, but I am surprised
> that the differences are so significant on that machine.
> Some simple operations such as accessing the menus (both the pop-up menus
> and the menus from the toolbox), refreshing the toolbox or refreshing the
> contents of the docks take approximatively 5 to 6 times longer than with
> the old 1.2.3 version.  The delays are significant enough to disturb the
> normal flow of operations (at least for me).
> Does anybody know what could be the source of these delays?  Is this due
> to the GIMP itself (debugging code, new user interface) or is this due to
> the fact that the CVS version uses GTK+ 2.0 instead of GTK+ 1.2.x?

Hard to say. It's been said that GTK+-2.0 is substantially slower than
1.2. I don't notice much difference here but then my machine is
probably fast enough. Have you played with testgtk; do you notice the
same problems there?

Of course GIMP-1.3 has lots of room for improvement. One thing that is
on our TODO is to change GimpPreview so it can use GdkPixbuf directly.
We'd avoid the conversion to TempBuf and could use the (optionally 
hardware accelerated) pixbuf render routines.

Since we use a model-view concept in GIMP-1.3, we use a lot of signal
emissions to synchronize the UI with the core data structs. You could
get a noticeable speedup by compiling glib without debugging (default
since 2.0) and make sure that app/core/gimpmarshal.[ch] is generated
using a recent version of glib-genmarshal. Newer versions access the
GValues used in signal emissions directly instead of going thru
extensive type checks. Basically you should have some code like this
in app/core/gimpmarshal.c:

#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int

For further optimizations we should do some profiling first since it
doesn't make sense to remove useful debugging code unless it shows up
significantly in the profile.

Salut, Sven
Gimp-developer mailing list

Reply via email to