> --------------------------------------------------------
> #include <gtk/gtk.h>
>
> static const char *text[] = {
> "hello, world",
> "nihao entry",
> "Slide and release",
> "the power switch to wake",
> "become impassioned or",
> "excited: the young man"
> };
>
> static void
> button_clicked (GtkWidget *widget, gpointer data)
> {
> g_print ("button %p clicked, data="" widget, (gint)data);
> }
>
> int main (int argc, char *argv[])
> {
> GtkWidget *window;
> GtkWidget *vbox;
> GtkWidget *button;
> int i;
> gint64 t[20];
> gint cnt = 0;
>
> gtk_init (&argc, &argv);
>
> t[cnt++] = g_get_monotonic_time ();
> gtk_settings_get_for_screen (gdk_screen_get_default ());
> t[cnt++] = g_get_monotonic_time ();
> window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
> gtk_widget_set_size_request (window, 300, 400);
> t[cnt++] = g_get_monotonic_time ();
> vbox = gtk_vbox_new (FALSE, 5);
> gtk_widget_show (vbox);
> t[cnt++] = g_get_monotonic_time ();
> for (i = 0; i < 5; i++)
> {
> button = gtk_button_new_with_label (text[i]);
> gtk_widget_show (button);
>
> g_signal_connect (button, "clicked", G_CALLBACK (button_clicked),
> (gpointer)i);
>
> gtk_box_pack_start (GTK_BOX(vbox), button, TRUE, FALSE, 5);
> }
>
> gtk_container_add (GTK_CONTAINER (window), vbox);
> gtk_container_set_border_width (GTK_CONTAINER (window), 10);
>
> t[cnt++] = g_get_monotonic_time ();
> gtk_widget_show (window);
> t[cnt++] = g_get_monotonic_time ();
>
> gdk_window_process_updates (gtk_widget_get_window (window), TRUE);
> t[cnt++] = g_get_monotonic_time ();
>
> g_print("time(cnt=%d)(start=%lld): ", cnt, t[0]/1000);
> for (i = 1; i < cnt; i++)
> g_print("[%d]=%lld ", i, (t[i] - t[i-1])/1000);
> g_print("total=%lld (end=%lld)\n", (t[i-1] - t[0])/1000, t[i-1]/1000);
>
> gtk_main ();
>
> return 0;
> }
> -------------------------------
> the result is:
> time(cnt=7)(start=5830680): [1]=210 [2]=110 [3]=10 [4]=140 [5]=1430 [6]=270
> total=2170 (end=5832850)
>
> cat /proc/cupinfo
> Processor : ARMv6-compatible processor rev 7 (v6l)
> BogoMIPS : 323.58
> Features : swp half thumb fastmult vfp edsp java
> CPU implementer : 0x41
> CPU architecture: 7
> CPU variant : 0x0
> CPU part : 0xb76
> CPU revision : 7
> Hardware : Reference Board for TV/STB SoC
> Revision : 0000
> Serial : 0000000000000000
> ===================================
> Obviously, most time spend on the last gtk_widget_show.
>
> 2011/3/20 Markku Vire <
markku vire iki fi>
>>
>> Hi,
>>
>> On Fri, 2011-03-18 at 14:13 +0800, czk wrote:
>> > hello everyone,
>> > I use gtk+-3.0 in a embedded device. If I create a window put 4
>> > buttons , 4 entrys 3 labels in it, from gtk_window_new to the window
>> > was showed spend 4 seconds totally. It a long time for me. Most time
>> > spend in gtk_widget_show_all.
>> >
>> > Less than 1.5 second can acceptable. Any one has ideas? Thanks.
>>
>> Sounds like you're searching the reason from a wrong place. The core Gtk
>> functions like gtk_widget_show_all consume practically no time by
>> themselves (even on embedded device). It's far more likely that you
>> encounter some hidden "lazy" initialization. For example, on Gtk+2.0 the
>> theme parsing and realization took place when you first time tried to
>> show a toplevel.
>>
>> cheers,
>>
>> -Markku-
>>
>>
>
>