[Lldb-commits] [PATCH] D103504: Improve performance when parsing symbol tables in mach-o files.
Greg Clayton via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 1 21:54:27 PDT 2021
clayborg created this revision.
clayborg added reviewers: labath, aprantl, JDevlieghere, jingham.
Herald added a subscriber: kristof.beyls.
clayborg requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
Some larger projects were loading quite slowly with the current LLDB on macOS and macOS simulator builds. I did some instrument traces and found 3 main culprits:
- a LLDB timer that was put into a function that was called too often
- a std::set that was keeping track of the address of symbols that were already added
- a unnamed function generator in ObjectFile that was going slow due to allocations
In order to see this in action I ran the latest LLDB on a large application with many frameworks using the following method:
(lldb) script import time; start_time = time.perf_counter()
(lldb) file Large.app
(lldb) script print(time.perf_counter() - start_time)
I first range "sudo purge" to clear the system file caches to simulate a cold startup of the debugger, followed by two iterations with warm file caches.
Prior to this fix I was seeing the following timings:
17.68 (cold)
14.56 (warm 1)
14.52 (warm 2)
After this fix I was seeing:
11.32 (cold)
8.43 (warm 1)
8.49 (warm 2)
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D103504
Files:
lldb/source/Core/Module.cpp
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
lldb/source/Symbol/ObjectFile.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103504.349173.patch
Type: text/x-patch
Size: 6796 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210602/1c66fd57/attachment-0001.bin>
More information about the lldb-commits
mailing list