[Spice-devel] [PATCH spice-common] quic: Remove 'no-inline' hack
Frediano Ziglio
fziglio at redhat.com
Fri May 25 19:12:56 UTC 2018
>
> Hi,
>
> On Fri, May 25, 2018 at 04:51:01PM +0100, Frediano Ziglio wrote:
> > The quic code goes through a function pointer in two places in
> > order to try to prevent the compiler from inlining code.
> > Doing performance measurements this trick does not work anymore
>
> What do you mean by performance measurements? You've measured
> with and without this patch and it is basically the same?
>
So basically that sometimes are better sometimes worst :-)
Should I extend the comment somehow?
Today I merged Christophe test (sent time ago), I have a version that
does also time measurements.
> > and just make code less readable.
>
> Indeed, this is nicer.
>
> I'm just curious about the measurement that you mention above but
> this is an improvement from my point of view,
>
> Acked-by: Victor Toso <victortoso at redhat.com>
>
> > This patch and message was based on a previous work of
> > Christophe Fergeau.
> >
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> > common/quic.c | 23 ++---------------------
> > 1 file changed, 2 insertions(+), 21 deletions(-)
> >
> > diff --git a/common/quic.c b/common/quic.c
> > index 12e9b0b..a9a82ba 100644
> > --- a/common/quic.c
> > +++ b/common/quic.c
> > @@ -388,19 +388,10 @@ static void more_io_words(Encoder *encoder)
> > encoder->io_end = encoder->io_now + num_io_words;
> > }
> >
> > -static void __write_io_word(Encoder *encoder)
> > -{
> > - more_io_words(encoder);
> > - *(encoder->io_now++) = encoder->io_word;
> > -}
> > -
> > -static void (*__write_io_word_ptr)(Encoder *encoder) = __write_io_word;
> > -
> > static inline void write_io_word(Encoder *encoder)
> > {
> > if (encoder->io_now == encoder->io_end) {
> > - __write_io_word_ptr(encoder); //disable inline optimizations
> > - return;
> > + more_io_words(encoder);
> > }
> > *(encoder->io_now++) = encoder->io_word;
> > }
> > @@ -441,20 +432,10 @@ static inline void flush(Encoder *encoder)
> > encode(encoder, 0, 1);
> > }
> >
> > -static void __read_io_word(Encoder *encoder)
> > -{
> > - more_io_words(encoder);
> > - encoder->io_next_word = GUINT32_FROM_LE(*(encoder->io_now++));
> > -}
> > -
> > -static void (*__read_io_word_ptr)(Encoder *encoder) = __read_io_word;
> > -
> > -
> > static inline void read_io_word(Encoder *encoder)
> > {
> > if (encoder->io_now == encoder->io_end) {
> > - __read_io_word_ptr(encoder); //disable inline optimizations
> > - return;
> > + more_io_words(encoder);
> > }
> > spice_assert(encoder->io_now < encoder->io_end);
> > encoder->io_next_word = GUINT32_FROM_LE(*(encoder->io_now++));
More information about the Spice-devel
mailing list