<div dir="ltr">Cool - thanks for sharing!<br><br>Perhaps you could add a graph of the times in another sheet/beside the table?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 15, 2016 at 2:42 PM, Rui Ueyama via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</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">Speed is one of the most important goals for the new ELF linker. I ran a benchmark for every commit to LLD/ELF that was made after the last October, and I'd like to share the result. The motivation is to see if the linker is getting slower as we add more features, and if so, which commits are heavy ones in terms of performance. I measured time to link the same Clang executable.<div><br></div><div>Here is the result. This table contains a commit message, a SVN revision number, time to link, size of the resulting Clang binary in each row.</div><div><br></div><div><a href="https://docs.google.com/spreadsheets/d/1QlQZ51VQUna6gX0qXj19v_ZEII5vGaHrUhBKq-Z_9uc/edit?usp=sharing" target="_blank">https://docs.google.com/spreadsheets/d/1QlQZ51VQUna6gX0qXj19v_ZEII5vGaHrUhBKq-Z_9uc/edit?usp=sharing</a><br></div><div><br></div><div>As you can see, the linker is faster than the original. A few key findings are listed below:</div><div><br></div><div> - The linker tend to be gradually getting slower over time in general.</div><div> - There are a few commits that increased link time by a few percent or more.</div><div> - However, we also committed a few performance improvement changes to offset them.</div><div><br></div><div><span style="font-size:13px;font-family:Arial"><span style="text-align:right">The commit that increased link time most (+15%) is </span></span><span style="font-family:Arial;font-size:13px;text-align:right">r251212: </span><span style="font-family:Arial;font-size:13px">Add support for merging string from SHF_STRINGS sections. This does not come as a surprise since string merging is a computationally heavy operation.</span></div><div><span style="font-family:Arial;font-size:13px"><br></span></div><div><span style="font-size:13px;font-family:Arial">The commit that decreased link time most (-29%) is r250315: ELF2: Merge .{text,rodata,data,bss}.* sections. This is because the commit significantly decreased number of sections in the output.</span></div><div><span style="font-size:13px;font-family:Arial"><br></span></div><div><span style="font-size:13px;font-family:Arial">The following commits are also noteworthy.</span><span style="font-family:Arial;font-size:13px"><br></span></div><div><span style="font-size:13px;font-family:Arial"><br></span></div><div><span style="font-family:Arial;font-size:13px;text-align:right"> - r257017: </span><span style="font-family:Arial;font-size:13px">ELF: Improve performance of string table construction (-14.0%)</span><br></div><div><span><span style="font-size:13px;font-family:Arial"><div style="font-family:arial,sans-serif;font-size:small"><span style="font-size:13px;font-family:Arial;text-align:right"> - r251332: </span><font face="Arial">Optimize StringTableBuilder </font><span style="font-family:Arial;font-size:13px;text-align:right">(-7.8%)</span></div><div><span style="font-family:Arial;font-size:13px;text-align:right"><br></span></div></span></span></div><div><span><span style="font-size:13px;font-family:Arial">Ideally, we should have a perf bot to run a benchmark for every commit, so that we do not accidentally commit changes that hurt performance.</span></span></div><div><span><span style="font-size:13px;font-family:Arial"><br></span></span></div><div><span><span style="font-size:13px;font-family:Arial">Overall, I'm satisfied with the result. It found no commit</span></span><span style="font-family:Arial;font-size:13px"> that increases link time for no justifiable reason.</span></div></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>