Re: gparam performance
- From: Alex Larsson <alexl redhat com>
- To: gtk-devel-list gnome org
- Cc: timj gtk org
- Subject: Re: gparam performance
- Date: Wed, 13 Mar 2002 00:03:32 -0500 (EST)
No comments on this?
On Sun, 10 Mar 2002, Alex Larsson wrote:
> More performance patches from nautilus profiles.
>
> Calling:
> g_strcanon (pspec->name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-')
>
> Is really inefficient, because it's gonna call strchr() on the large
> a-zA->Z0-9- string for every char in the key name. Since the char sets are
> ranges this can be done a lot better:
>
> Index: gobject/gparam.c
> ===================================================================
> RCS file: /cvs/gnome/glib/gobject/gparam.c,v
> retrieving revision 1.21
> diff -u -p -r1.21 gparam.c
> --- gobject/gparam.c 19 Feb 2002 17:38:45 -0000 1.21
> +++ gobject/gparam.c 10 Mar 2002 23:48:18 -0000
> @@ -257,6 +257,21 @@ g_param_spec_get_blurb (GParamSpec *pspe
> return pspec->_blurb;
> }
>
> +static void
> +canonalize_key(gchar *key)
> +{
> + gchar *p, c;
> +
> + for (p = key; (c = *p) != 0; p++)
> + {
> + if (c != '-' &&
> + (c < '0' || c > '9') &&
> + (c < 'A' || c > 'Z') &&
> + (c < 'a' || c > 'z'))
> + *p = '-';
> + }
> +}
> +
> gpointer
> g_param_spec_internal (GType param_type,
> const gchar *name,
> @@ -272,7 +287,7 @@ g_param_spec_internal (GType para
>
> pspec = (gpointer) g_type_create_instance (param_type);
> pspec->name = g_strdup (name);
> - g_strcanon (pspec->name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
> + canonalize_key (pspec->name);
> pspec->_nick = g_strdup (nick);
> pspec->_blurb = g_strdup (blurb);
> pspec->flags = (flags & G_PARAM_USER_MASK) | (flags & G_PARAM_MASK);
> @@ -650,7 +665,7 @@ param_spec_ht_lookup (GHashTable *hash_
> key.name = g_strdup (param_name);
> key.owner_type = owner_type;
>
> - g_strcanon (key.name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
> + canonalize_key (key.name);
> if (walk_ancestors)
> do
> {
>
>
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Alexander Larsson Red Hat, Inc
alexl redhat com alla lysator liu se
He's an old-fashioned dishevelled rock star with acid for blood. She's a
violent French-Canadian mechanic with an evil twin sister. They fight crime!
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]