glib/gvariant: Avoid extraneous GBytes ref counting
Right now we create a bunch of GBytes which then get their reference count incremented and immediately decremented. This causes quite a bit of disruption for cacheline re-use.
Instead, this change creates an internal helper to transfer ownership of
GBytes
to the new GVariant
directly.
Surprisingly, this reduced wallclock time by about 6% for a contrived
benchmark of building G_VARIANT_TYPE ("as")
variant with GVariantBuilder
.
This originally would conflict with !4296 (merged) but has been updated to include the changes there as well.
Edited by Philip Withnall