git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Gennady Kupava <gennady.kupava@gmail.com>
Cc: git@vger.kernel.org, Gennady Kupava <gkupava@bloomberg.net>
Subject: Re: [PATCH] Reduce performance penalty for turned off traces
Date: Fri, 17 Nov 2017 17:12:51 -0500	[thread overview]
Message-ID: <20171117221251.sku6lqbemcddvlky@sigill.intra.peff.net> (raw)
In-Reply-To: <CAPu-DQr0eRYiafF64=Mwm56xJgNPH0HVm+B4vKnzK0iAE4_xUg@mail.gmail.com>

On Sun, Nov 12, 2017 at 11:24:11PM +0000, Gennady Kupava wrote:

> In reality, gcc didn't do that and I saw 3 function calls. I am pretty
> sure that compiler of the distant bright future will do that, and only
> problem would be to eliminate that single function call. Hopefully
> with -flto it will also eliminate this single functions call, at it
> will be able to see through translation units. Given that I actually
> like current implementation as it hides all details in .c file.

Yeah, I agree with your analysis that we are really just overriding what
could eventually be figured out by the compiler during LTO.

I do think this is worth pursuing in the meantime, though, because it's
not _too_ much work, and we don't know when that magical optimizing
compiler will appear. :) So this frees us up in the meantime to worry
less about the cost of tracing.

> Now, implementation you suggesting moves extra things into .h, so it
> is imperfect in terms above, while things I suggested moves only
> necessary bit of checking the necessity to do anything, which is only
> (interesting) part should be executed while traces are off, and the
> only part we really want to be inlined.

I only meant to suggest moving the necessary checking into the .h file.
It's just that we have to make it a static inline for cases where we
don't have variadic macros. Anyway, I'm OK with your original notion of
leaving the non-variadic-macro systems on the "slow" path, so we can
just go with the pure-macro thing you have.

> > So it is measurable, and we might expect that tracing a really big loop
> > (say over all of the objects in the repository) would benefit. OTOH, a
> > real loop would actually be doing other stuff, so the speedup would be
> > less dramatic. Still, it seems like an easy win.
> 
> I actually quite familiar with performance analysis and know how to
> use perf and similar tools a bit -
> so if there is something more measurable in TODO, I could try. But I
> guess this is interesting to many devs so such tasks probably already
> all done and bottlenecks are identified in git =)

There are lots of bottlenecks still to be found, I'm sure. If you want
to have a go at finding some with perf, be my guest. :)

-Peff

  reply	other threads:[~2017-11-17 22:12 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-11 19:28 [PATCH] Reduce performance penalty for turned off traces gennady.kupava
2017-11-12 14:17 ` Jeff King
2017-11-12 23:24   ` Gennady Kupava
2017-11-17 22:12     ` Jeff King [this message]
2017-11-15 19:14   ` Stefan Beller
2017-11-17 22:16     ` Jeff King
2017-11-19  0:42       ` [PATCH 1/2] Simplify tracing code by removing trace key normalization concept gennady.kupava
2017-11-19  0:42         ` [PATCH 2/2] Reduce performance cost of the trace if trace category is disabled gennady.kupava
2017-11-19  8:27           ` Johannes Sixt
2017-11-19 13:18             ` Gennady Kupava
2017-11-19  2:19         ` [PATCH 1/2] Simplify tracing code by removing trace key normalization concept Junio C Hamano
2017-11-19 13:16           ` Gennady Kupava
2017-11-20  0:24             ` Junio C Hamano
2017-11-20  4:59               ` Junio C Hamano
2017-11-26 20:11                 ` [PATCH 1/2] trace: remove trace key normalization gennady.kupava
2017-11-26 20:11                   ` [PATCH 2/2] trace: improve performance while category is disabled gennady.kupava
2017-11-27  1:21                     ` Junio C Hamano
2017-11-27  1:32                       ` Junio C Hamano
2017-11-27  3:25                         ` Junio C Hamano
2017-11-27 10:12                           ` Gennady Kupava

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171117221251.sku6lqbemcddvlky@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=gennady.kupava@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gkupava@bloomberg.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).