[llvm-dev] LLD: time to enable --threads by default

Rui Ueyama via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 16 12:44:46 PST 2016


LLD supports multi-threading, and it seems to be working well as you can
see in a recent result
<http://llvm.org/viewvc/llvm-project?view=revision&revision=287140>. In
short, LLD runs 30% faster with --threads option and more than 50% faster
if you are using --build-id (your mileage may vary depending on your
computer). However, I don't think most users even don't know about that
because --threads is not a default option.

I'm thinking to enable --threads by default. We now have real users, and
they'll be happy about the performance boost.

Any concerns?

I can't think of problems with that, but I want to write a few notes about
that:

 - We still need to focus on single-thread performance rather than
multi-threaded one because it is hard to make a slow program faster just by
using more threads.

 - We shouldn't do "too clever" things with threads. Currently, we are
using multi-threads only at two places where they are highly parallelizable
by nature (namely, copying and applying relocations for each input section,
and computing build-id hash). We are using parallel_for_each, and that is
very simple and easy to understand. I believe this was a right design
choice, and I don't think we want to have something like workqueues/tasks
in GNU gold, for example.

 - Run benchmarks with --no-threads if you are not focusing on multi-thread
performance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161116/3e9593e1/attachment.html>


More information about the llvm-dev mailing list