Branch: refs/heads/master
Home: https://github.com/dyninst/dyninst
Commit: f83cf2135a345856317eeaf5212901dac229f579
https://github.com/dyninst/dyninst/commit/f83cf2135a345856317eeaf5212901dac229f579
Author: Kirill Batuzov <[email protected]>
Date: 2024-03-01 (Fri, 01 Mar 2024)
Changed paths:
M parseAPI/h/CodeObject.h
M parseAPI/src/CodeObject.C
M parseAPI/src/Parser.C
M parseAPI/src/Parser.h
Log Message:
-----------
Add CodeObject::parse overloads to accept multiple targets
Parser::parse_at takes only one target at a time. This has two repercussions:
1) It can't take full advantage of parallel parsing when there are multiple
targets in need of it.
2) It still enters and exits OMP parallel loop. This operation has its own
performance overhead that
depends on the host system (number of processors and OMP configuration).
This overhead can be very significant.
This change introduces Parser::parse_vec that takes a vector of targets and
parses them in parallel.
When there are significant number of parse_at calls, performance gains from
migrating to parse_vec can be huge. Parsing what initial parse() missed in
libLLVM-12.so.1 with parse_at took nearly 20 minutes on 4-core hyper-threaded
CPU. Doing the same with parse_vec took less than 4 minutes. On 128-bit ARM64
server we've seen even bigger gains
(from around 40 minutes to less than 3).
Co-authored-by: Kirill Batuzov <[email protected]>
To unsubscribe from these emails, change your notification settings at
https://github.com/dyninst/dyninst/settings/notifications
_______________________________________________
Dyninst-api mailing list
[email protected]
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api