On Tue, Jun 03, 2014 at 04:51:14PM +0200, Giuseppe Scrivano wrote: > "Daniel P. Berrange" <berrange@xxxxxxxxxx> writes: > > > I'd suggest using oprofile or sysprof to collect data on exactly > > where our cputime is disappearing to before trying to optimize > > further. > > > I've seen that creating and accessing many gobjects, as this chunk of > code in osinfo_loader.c does, takes a lot of cputime: > > OsinfoDevice *dev = osinfo_loader_get_device(loader, id); > osinfo_entity_set_param(OSINFO_ENTITY(dev), > OSINFO_DEVICE_PROP_VENDOR_ID, > vendor_id); > osinfo_entity_set_param(OSINFO_ENTITY(dev), > OSINFO_DEVICE_PROP_VENDOR, > vendor); > osinfo_entity_set_param(OSINFO_ENTITY(dev), > OSINFO_DEVICE_PROP_PRODUCT_ID, > device_id); > osinfo_entity_set_param(OSINFO_ENTITY(dev), > OSINFO_DEVICE_PROP_PRODUCT, > device); > osinfo_entity_set_param(OSINFO_ENTITY(dev), > OSINFO_DEVICE_PROP_BUS_TYPE, > busType); So that basically comes down to the performance of the hash table inserts. I wonder if we could make use of GQuark and/or g_intern_string so that the hash table lookup can do a straight pointer or int comparison, instead of strcmp. }? Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| _______________________________________________ Libosinfo mailing list Libosinfo@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libosinfo