Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Hannes Domani <ssbssa@yahoo.de>
To: Gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/4] Attribute method inlining
Date: Thu, 21 May 2020 01:08:39 +0000 (UTC)	[thread overview]
Message-ID: <402931801.2106918.1590023319120@mail.yahoo.com> (raw)
In-Reply-To: <20200520174032.9525-2-tromey@adacore.com>

 Am Mittwoch, 20. Mai 2020, 19:40:44 MESZ hat Tom Tromey <tromey@adacore.com> Folgendes geschrieben:

> I ran gdb 10 times like:
>
>       /bin/time -f %e \
>             ./gdb/gdb --data-directory ./gdb/data-directory -nx \
>             -iex 'set debug-file-directory /usr/lib/debug' \
>             -batch $X
>
> ... where $X was the test executable.  Then I computed the mean time.
> This was all done with a standard (-g -O2) build of gdb.
>
> The baseline times were
>
> gdb    1.90
> libxul 2.12
> Ada    2.61
>
> This patch brings the numbers down to
>
> gdb    1.88
> libxul 2.11
> Ada    2.60

When I saw this, I thought I could do a similar profiling test on Windows (but
only with gdb itself).

So just: gdb.exe -q -batch gdb.exe

And I was a bit suprised to see that strcmp_iw_ordered (called from
sort_pst_symbols -> std::sort) is in ~24% of the profiling samples.
And only because of the functions isspace and tolower.

So I made a simple test, and added this before strcmp_iw_ordered:

static inline int isspace2 (int c)
{
  return c == 0x20 || (c >= 0x09 && c <= 0x0d);
}
#define isspace isspace2

static inline int tolower2 (int c)
{
  return (c >= 'A' && c <= 'Z') ? c + 0x20 : c;
}
#define tolower tolower2

And the mean time went from 3.7s down to 2.7s.


I'm not saying this is a correct solution, but does strcmp_iw_ordered have to
support anything besides the "C" locale?

Also, are isspace and tolower only on Windows a bottleneck?

(If anyone wants to see them, I can provide some profiler flame-graphs)


Hannes


  parent reply	other threads:[~2020-05-21  1:08 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-20 17:40 [PATCH 0/4] Micro-optimize DWARF partial symbol reading Tom Tromey
2020-05-20 17:40 ` [PATCH 1/4] Attribute method inlining Tom Tromey
2020-05-20 19:40   ` Tom Tromey
2020-05-21  1:08   ` Hannes Domani [this message]
2020-05-21 14:26     ` Pedro Alves
2020-05-21 15:03       ` Hannes Domani
2020-05-21 16:42         ` Pedro Alves
2020-05-21 17:18           ` Hannes Domani
2020-05-22 15:47             ` Pedro Alves
2020-05-22 20:28               ` Pedro Alves
2020-05-20 17:40 ` [PATCH 2/4] Lazily compute partial DIE name Tom Tromey
2020-05-20 17:40 ` [PATCH 3/4] Inline abbrev lookup Tom Tromey
2020-05-20 17:40 ` [PATCH 4/4] Use add_partial_symbol in load_partial_dies Tom Tromey
2020-05-20 19:30 ` [PATCH 0/4] Micro-optimize DWARF partial symbol reading Christian Biesinger
2020-05-20 21:08 ` Simon Marchi
2020-05-27 17:48 ` Tom Tromey

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

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

  git send-email \
    --in-reply-to=402931801.2106918.1590023319120@mail.yahoo.com \
    --to=ssbssa@yahoo.de \
    --cc=gdb-patches@sourceware.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox