Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: f83cf2135a345856317eeaf5212901dac229f579
      
https://github.com/dyninst/dyninst/commit/f83cf2135a345856317eeaf5212901dac229f579
  Author: Kirill Batuzov <43408219+batuz...@users.noreply.github.com>
  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 <kirill.batuz...@huawei.com>



To unsubscribe from these emails, change your notification settings at 
https://github.com/dyninst/dyninst/settings/notifications
_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to