[gstreamer-bugs] [Bug 598896] [GstRegistry] Cache lists of ElementFactory and TypeFindFactory

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Oct 22 02:25:40 PDT 2009


https://bugzilla.gnome.org/show_bug.cgi?id=598896
  GStreamer | gstreamer (core) | git

Sebastian Dröge <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |slomo at circular-chaos.org

--- Comment #12 from Sebastian Dröge <slomo at circular-chaos.org> 2009-10-22 09:25:36 UTC ---
(In reply to comment #11)
> (In reply to comment #8)
> > Review of attachment 145766 [details] [details]:
> > 
> > What Tim said, use the GObject instance private stuff here. Not that it matters
> > much (because there's usually only one GstRegistry instance) but it's cleaner
> > ;)
> 
>   That private data code in gobject/gtype.c is ugly/slow beyond belief. Until
> that's fixed, I have no intention of adding that in optimisations.
>   I could definitely have a look at speeding up that gtype code though.

It's not going to make anything slower here because you get it once in your
instance_init as you do it now. Getting it always when you need it is far too
expensive for everything.

But you agreed to that on IRC already ;)

> (In reply to comment #9)
> > Review of attachment 145923 [details] [details]:
> > 
> > - Use g_list_alloc() instead of GSlice, you never know if GLib will change
> > allocations of list nodes again in the future
> > - You could use g_list_append() instead of the manual twiddling with the next
> > and prev pointers... unless the function call is too expensive for you :)
> > g_list_append() runs in O(1) if you append a new node to the last element btw
> > but you know that ;)
> 
>   I'm just wondering if it's worth it. Having to call two external functions
> (which do checks) over a list.. is basically gonna kill the optimisation.
>   I'm either completely removing it or keeping as is.

g_list_alloc() does no checks, it's just a wrapper around g_slice_new0() but if
you use it, nothing will break when GLib switches to GSlice2 or GSuperAllocator
:)

Argument for g_list_append() is fine though, just keep that code as is and only
call g_list_alloc().
The prev/next/data design of GList can't change anyway without breaking ABI/API

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.



More information about the Gstreamer-bugs mailing list