llvm / llvm/llvm-project

[lld] Tracking bug for ld64.lld performance improvements

Open
#222,068 0 comments 0 reactions 0 assignees View on GitHub
lld
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Filing this as a general tracking bug for performance improvements I will be uploading as mentioned in [this discourse post](https://discourse.llvm.org/t/plan-to-improve-ld64-lld-performance/91715).

Performance improvements will be measured with hyperfine runs (3 warm up runs, 20 runs), and all repro files can be found [at this google drive link](https://drive.google.com/drive/u/1/folders/14Xn8gKV1ChMgBnRfGWsK9XTxpx9-kzjj). I double checked and this should be a public link and not require an account to sign in, please let me know if that's not the case.

All repro files were made on Chromium change id [Ic7b9dfb6b70f8a43d78bbe3192ea957cae6fb484](https://chromium-review.googlesource.com/q/Ic7b9dfb6b70f8a43d78bbe3192ea957cae6fb484).

The file names correspond to the relevant gn args. E.g., `mac_debug_component_sym_2` has the following args:

```
is_debug = true
is_component_build = true
symbol_level = 2
```

As a note `dcheck_always_on` is set to true in all the args as well and the asan repro has an extra argument so its full set of gn args is

```
dcheck_always_on = false
enable_ipc_fuzzer = true
is_asan = true
is_component_build = false
is_debug = false
```

Contributor guide

Open the contributing guide

Research direction

Start with the linked Discourse post and the repro files in the Google Drive folder. Run the stated hyperfine benchmark with three warm-up runs and 20 measured runs using the listed Chromium GN arguments; done means a documented performance improvement for ld64.lld against the relevant repro.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers, performance
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.