Marc-André Lureau <marcandre.lur...@redhat.com> writes: > Hi > > ----- Original Message ----- >> > >> > The title claims "move dump_qobject() from block/ to qobject/", but >> > that's not what the patch does. It *replaces* dump_qobject() by >> > qobject_to_string(). The former dumps to a callback, the latter to a >> > dynamic string buffer. >> > >> > Providing dump functionality in one way doesn't preclude the other way: >> > given callback, one could define a callback that builds up a string >> > buffer, and given buffer, one could (and you actually do) pass the >> > buffer to a callback. That's less efficient, though. >> > >> > Trading efficiency for ease-of-use should be okay here, but I'm cc'ing >> > Max and Kevin to double-check. >> >> I believe convenience is more important than efficiency here. It's easy to >> call qobject_to_string(foo) from gdb for example, with a callback, it's less >> easy. >> >> (fprintf or monitor_fprintf will both build an internal buffer anyway, >> efficiency is probably similar)
monitor_vprintf() formats to a dynamic buffer, which it passes to monitor_puts(). monitor_puts() uses a line buffer. fprintf() can be unbuffered, line-buffered, or fully buffered. Converting everything to a string first is different: the string buffer holds *everything* rather than just a line or some fixed size. > Hmm, there are more allocations in qobject_to_string() though