Re: (severe) performance issues
- From: jcupitt gmail com
- To: "David J. Andruczyk" <djandruczyk yahoo com>
- Cc: gtk-list gnome org
- Subject: Re: (severe) performance issues
- Date: Mon, 26 Mar 2007 11:30:49 +0000
Hi David,
On 3/26/07, David J. Andruczyk <djandruczyk yahoo com> wrote:
I would NOT expect updating approx 10 labels perhaps 5-10 times per
second (ie. when data chages) on a 1.8Ghz machine be so cpu hungry.
I made a tiny test program. This updates 50 labels at 100Hz with less
than 1% CPU on my machine.
--------------
/* compile with
* gcc -Wall try16.c `pkg-config gtk+-2.0 --cflags --libs`
*/
#include <gtk/gtk.h>
#include <stdlib.h>
const int NUM_LABELS = 50;
const int FPS = 100;
gboolean
update_labels (GtkWidget * label[])
{
int i;
for (i = 0; i < NUM_LABELS; i++)
{
char buf[256];
snprintf (buf, 256, "%d", rand ());
gtk_label_set_text (GTK_LABEL (label[i]), buf);
}
return TRUE;
}
int
main (int argc, char **argv)
{
GtkWidget *label[NUM_LABELS];
GtkWidget *win, *box;
int i;
gtk_init (&argc, &argv);
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (win, "destroy", G_CALLBACK (gtk_main_quit), NULL);
box = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (win), box);
for (i = 0; i < NUM_LABELS; i++)
{
label[i] = gtk_label_new (NULL);
gtk_box_pack_start (GTK_BOX (box), label[i], TRUE, TRUE, 0);
}
g_timeout_add (1000 / FPS, (GSourceFunc) update_labels, label);
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
-------------
I have Dapper still on my machine (gtk 2.8, amd64 2.7 GHz) which might
make some difference I guess. Though I think Pango has actually sped
up in 2.10.
I wonder if another reason might be resizing? Setting a label's text
can cause the label to change size, which might be forcing some
(large?) chunk of your interface to resize too. You could try using
gtk_widget_set_size_request() on your labels to make them a fixed
size.
John
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]