Jan Kratochvil
2011-10-18 09:44:57 UTC
Hi Mark,
<warning> moved to a public list </warning>
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
http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00992.html
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:
http://people.redhat.com/jkratoch/ns.tar.xz
Thanks,
Jan
<warning> moved to a public list </warning>
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, whichGDB time.
uses elfutils libdw uses DW_AT_subling to more efficiently go through
the debug_info DIEs.
[patch] dwarf2out: Drop the size + performance overhead of DW_AT_sibling
http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00992.html
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:
http://people.redhat.com/jkratoch/ns.tar.xz
Thanks,
Jan