<div dir="ltr">I'll start writing a patch. I'll probably only modify LayoutPass.cpp and try to make it faster without affecting existing features.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 21, 2015 at 8:07 PM, Rui Ueyama <span dir="ltr"><<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">In r226336 I shove off 1.2 seconds out of 9.8 seconds for lld to link lld. That's done by parallelizing archive member parsing. But I realized that was not the slowest pass.<div><br></div><div>The single slowest pass in LLD is LayoutPass. Only sort() at the last of Layoutpass::perform takes about 3 seconds (one third of total execution time). It is because the comparison function passed to sort, compareAtoms, does too much stuff.</div><div><br></div><div>It looks to me that the entire pass is overkill. We don't really need that complexity there. I think nobody is actually depends on the details of the pass's behavior.</div><div><br></div><div>I'd like to simplify LayoutPass, so that the pass sorts atoms only by file position and position in file (that means atoms are sorted in the same order as the command line.) I believe that should be enough and we can still keep output the same.</div><div><br></div><div>Any comments?</div></div>
</blockquote></div><br></div>