[PATCH 1/4] Attribute method inlining
Hannes Domani
ssbssa@yahoo.de
Thu May 21 01:08:39 GMT 2020
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
More information about the Gdb-patches
mailing list