For full-debug-info (is_debug=true / symbol_level=2 builds), this makes
linking 15% slower, but gdb startup 1500% faster (for lld: link time
3.9s->4.4s, gdb load time >30s->2s).
For link time, I ran
bench.py -o {noindex,index}.txt \ sh -c 'rm out/gn/bin/lld && ninja -C out/gn lld'
and then ministat noindex.txt index.txt:
x noindex.txt + index.txt N Min Max Median Avg Stddev x 5 3.784461 4.0200169 3.8452811 3.8754988 0.089902595 + 5 4.32496 4.6058481 4.3361208 4.4141198 0.12288267 Difference at 95.0% confidence 0.538621 +/- 0.15702 13.8981% +/- 4.05161% (Student's t, pooled s = 0.107663)
For gdb load time I loaded the crash in PR48392 with
gdb -ex r --args ../out/gn/bin/ld64.lld.darwinnew @response.txt
and just stopped the time until the crash got displayed with a stopwatch
a few times. So the speedup there is less precise, but it's so
pronounced that that's ok (loads ~instantly with the patch, takes a very
long time without it).
Only doing this for LLD because I haven't tried it with other linkers.
Not sure if anyone cares about this. Holler if you think we shouldn't do this and/or put it behind a flag. See comment in the build file for the reasoning why I think this is a good default.