qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 43/43] qobject: move dump_qobject() from bloc


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v3 43/43] qobject: move dump_qobject() from block/ to qobject/
Date: Fri, 09 Jun 2017 14:40:57 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Marc-André Lureau <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]