GTK+ 2.0
Some random reader sent in: "Gtk.org all of a sudden (?) says version 2.0 is available. There is a FAQ for 2.0. Here is a mail from the gtk-devel-list with some 'pre-release release-notes' :)."
← Back to Stories (view on slashdot.org)
Well, now I've downloaded all the four libs and actually stresed my machine through building and installing it. The classic testgtk application that serves as a rather comprehensive demo of the various capabilities program is still around. And it's not anti-aliased on my machine (no xft, as far as I know), so even if turning that off helps, I'm still not happy. It's really annoying, since there's not that much visible improvement, although I'm sure everything is nice and new under the hood.
While typing this up, I had this brilliant idea: there are these things known as "benchmarks" which replace vague bitching with hard numbers... Aha!
I dove into the testgtk.c source, for both this new 2.0.0 release, and the last stable release, 1.2.10. In the "clist" demo (which is very interesting to me, since my app (mentioned in the thread root) uses GtkCList heavily), I added simple instrumentation to measure the time to add 1,000 rows with pixmaps. The results, based on running the code 10 times, dropping the min and max, and averaging the remaining 8 values:
- GTK+ 1.2.10: 0.081 s
- GTK+ 2.0.0: 0.787 s
Difference: a factor of 9.6 slower. Ouch. Oh, and please note that these times are for the "core" loop of the test case, which is enclosed in calls to gtk_clist_freeze() and gtk_clist_thaw(), meaning (afaik) that this does not include the time it takes for GTK+ to actually render the list. It's the internal bookkeeping only. Can you say "dramatically slower"? I know I can.The annoying thing with this 10X performance loss is that my next machine isn't all that likely to be 10X faster than my current one; it's simply too large a step. Bummer.
There, I think I've ranted enough on the topic for this moment. Thanks for listening. :^)
main(O){10<putchar(4^--O?77-(15&5128 >>4*O):10)&&main(2+O);}