This is the mail archive of the
mailing list for the Archer project.
gcc dwarf2out: Drop the size + performance overhead of DW_AT_sibling
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Mark Wielaard <mjw at redhat dot com>
- Cc: Project Archer <archer at sourceware dot org>
- Date: Tue, 18 Oct 2011 11:44:57 +0200
- Subject: gcc dwarf2out: Drop the size + performance overhead of DW_AT_sibling
- References: <201110170508.p9H581vh028090@shell.devel.redhat.com><20111017133634.GA5677@host1.jankratochvil.net><email@example.com>
<warning> moved to a public list </warning>
On Tue, 18 Oct 2011 11:26:03 +0200, Mark Wielaard wrote:
> On Mon, 2011-10-17 at 15:36 +0200, Jan Kratochvil wrote:
> > gcc.post: Drop DW_AT_sibling; remove 27 LoC: -3.49% .debug size, -1.7%
> > GDB time.
> Do you have more information about that? Systemtap for example, which
> uses elfutils libdw uses DW_AT_subling to more efficiently go through
> the debug_info DIEs.
The patch with various benchmarks is:
[patch] dwarf2out: Drop the size + performance overhead of DW_AT_sibling
GDB also uses DW_AT_sibling when available (skip_one_die and
locate_pdi_sibling). The mail above quotation:
# I guess DW_AT_sibling had real performance gains on CPUs with 1x (=no) clock
# multipliers. Nowadays mostly only the data size transferred over FSB matters.
The problem is the DIEs skipping by CPU is so cheap on current CPUs it cannot
be compared with the overhead of providing the helper data for it. I did not
expect dropping DW_AT_sibling would be even a consumer performance
_improvement_. I expected more it will be either not measurable or just not
significant enough for the .debug on-disk sizes cost justification.
I did only gdb and idb benchmarks. systemtap benchmark is welcome, libstdc++
files for benchmark, if it is enough for systemtap this way: