]> Cypherpunks repositories - gostls13.git/commit
debug/dwarf: speed up SkipChildren for compilation units
authorDmitry Vyukov <dvyukov@google.com>
Mon, 21 Sep 2020 10:19:47 +0000 (12:19 +0200)
committerDmitry Vyukov <dvyukov@google.com>
Mon, 21 Sep 2020 20:14:27 +0000 (20:14 +0000)
commitf92c64045f5effd4339749b8ce3b63b88cfef4d4
tree6b3de5367b1696152e6e3e5ad02fda17cdf215ef
parent7e9369a517d9ebf867748719948d8cbccec3bc57
debug/dwarf: speed up SkipChildren for compilation units

For a common pattern of iterating only over top-level compilation units (CU)
Reader.SkipChildren has decode and meterialize all CU subentries just
to skip them, because DW_TAG_compile_unit does not have DW_AT_sibling.
However, CUs have total size encoded before the unit and we already parse them
and know all unit sizes.
Optimize Reader.SkipChildren to use that size when skipping CUs children.

This speeds up iteration over a 1.3GB object file from 7.5s to 0.73s.

Change-Id: I2a8f00955159b4bd13571409f4817805f934cb69
Reviewed-on: https://go-review.googlesource.com/c/go/+/256217
Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Than McIntosh <thanm@google.com>
src/debug/dwarf/entry.go
src/debug/dwarf/entry_test.go