Re: future of development for the desktop
- From: "Jasper St. Pierre" <jstpierre mecheye net>
- To: weigelt metux de
- Cc: gtk-list gnome org
- Subject: Re: future of development for the desktop
- Date: Mon, 11 Jun 2012 18:59:20 -0400
On Mon, Jun 11, 2012 at 6:43 PM, Enrico Weigelt <weigelt metux de> wrote:
> * Gour <gour atmarama net> wrote:
>
>> Found it...it talks about gtk3 2x slower than gtk2 which I really did
>> not notice and cannot say how good that benchmark is to reflect real
>> speed.
>
> Well, AFAIK, gtk had become much more dynamic than its older versions.
> Maybe that's the problem: too many dynamic (heap) allocations,
> lookups, etc, etc.
Are you sure that's the cause of a slowdown? Did you make observations
and measure data?
> hmm, what could we possibly do about it ?
>
> Perhaps support efficient static allocations (.data segment), combined
> with a DSL (and an, maybe even platform/target specific compiler) for
> expressing the UI structures - something like Glade's XML files, but
> meant for compiling instead of dynamic loading.
>
> Just some examples.
>
> Menus: (picked the example from the gtk tutorial (*1))
>
> <menu id="main_menu" static="true" readonly="true">
> <submenu title="/_File">
> <item title="/_File/_New" hotkey="<control>N" handler="print_hello" />
> <item title="/File/_Open" hotkey="<control>O" handler="print_hello" />
> <item title="/File/_Save" hotkey="<control>S" handler="print_hello" id="save" readonly="false"/>
> <item title="/File/Save _As" id="main_menu_save_as" readonly="false"/>
> <separator />
> <item title="/File/Quit" hotkey="<control>Q" handler="gtk_main_quit" />
> </submenu>
> <submenu title="/_Options" />
> <item title="/Options/Test" />
> </submenu>
> <submenu title="/_Help" align="right">
> <item title="/_Help/About" />
> </submenu>
> </menu>
>
> This notation has some interesting aspects:
>
> * the id attribute of the menu tells the menu compiler how the menu variable
> (or macro) should be named. the compiler might also create several helper
> inline functions macros or macros for operating on that menu (at least
> for initialization and destruction)
> * the entries for save and save-as also have id's, which just means they should
> be accessible from the code as variables (or macros) and provide helper
> macros/functions
> * the static=true tells the menu compiler to generate some static struct (in .data)
> * the menu's id will be used for the generated variable name
> * the readonly=true tells it that the we never want to change anything here,
> so it can decide to put that even into .cdata
> * the item title's are just the gettext keys for the visual text, *not* the
> path as used in GtkItemFactoryItem (the hierachy information is already
> encoded in the XML structure)
> * the hotkeys could be even translated into some (perhaps even platform
> specific) input event code (so we dont need any mapping at runtime)
> * handler functions are expected to be already (prototype-) defined
>
> In the end, the compiler will generate some .h and .c file holding all the code
> for that menu and it's items.
>
> Our application might now initialize the menu (if there's some initialization
> needed at all) by calling GTK_MENU_main_menu_init(). It can enable/disable the
> save entry via GTK_MENU_ITEM_main_menu_save_enable(b). (<- b is a boolean flag).
>
>
> By this approach we could also describe all the individual widgets,
> windows, etc, by our own DSL and let the compiler handle the actual
> code generation. Initial versions would just translate to the current
> object types (hmm, shall we call that "classes" ? ;-o), later versions
> would use specialized ones, where it also can directly generate
> internal structures.
>
> This approach, IMHO, has several advantages:
>
> a) we can do more RAD (maybe not that far as with Glade's dynamic
> loading) and make the whole application code easier to read/write
> b) do performance/size optimizations behind the scenes, without
> having to touch individual applications (once they're ported to
> that new approach, of course ;-)).
>
>
> Maybe we shoud review a bunch of smaller and larger gtk applications
> and destill out some requirements catalog for that.
>
>
> What do you think about that idea ?
>
>
> cu
>
> [1] http://www.gtk.org/tutorial1.2/gtk_tut-13.html
> --
> ----------------------------------------------------------------------
> Enrico Weigelt, metux IT service -- http://www.metux.de/
>
> phone: +49 36207 519931 email: weigelt metux de
> mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
> ----------------------------------------------------------------------
> Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
> ----------------------------------------------------------------------
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> https://mail.gnome.org/mailman/listinfo/gtk-list
--
Jasper
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]