<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 26, 2015 at 4:11 AM, Michael Spencer <span dir="ltr"><<a href="mailto:bigcheesegs@gmail.com" target="_blank">bigcheesegs@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On Thu, Jan 22, 2015 at 4:07 AM, Rui Ueyama <<a href="mailto:ruiu@google.com">ruiu@google.com</a>> wrote:<br>
> In r226336 I shove off 1.2 seconds out of 9.8 seconds for lld to link lld.<br>
> That's done by parallelizing archive member parsing. But I realized that was<br>
> not the slowest pass.<br>
><br>
> The single slowest pass in LLD is LayoutPass. Only sort() at the last of<br>
> Layoutpass::perform takes about 3 seconds (one third of total execution<br>
> time). It is because the comparison function passed to sort, compareAtoms,<br>
> does too much stuff.<br>
><br>
> It looks to me that the entire pass is overkill. We don't really need that<br>
> complexity there. I think nobody is actually depends on the details of the<br>
> pass's behavior.<br>
><br>
> I'd like to simplify LayoutPass, so that the pass sorts atoms only by file<br>
> position and position in file (that means atoms are sorted in the same order<br>
> as the command line.) I believe that should be enough and we can still keep<br>
> output the same.<br>
><br>
> Any comments?<br>
><br>
</div></div><span class="">> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
<br>
</span>Have you tried switching to a parallel sort? On windows I got a pretty<br>
good perf increase by doing that.<br></blockquote><div><br></div><div>Done in r227132, but I only saw a minor performance increase.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I would also love to simplify this pass, as long as we make it clear<br>
what guarantees we are making.<br></blockquote><div><br></div><div>Yeah. I took a look at the history of the file to understand how the feature set that pass currently provides was chosen, and found that some features were introduced without clear reasoning and users of the features. Now a few pieces of code depends on subtle behavior of the pass, I need to understand the details first.</div></div></div></div>