<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 26, 2017 at 4:03 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Now that I have a workstation setup again for doing really stable<br>
benchmarks I decided to try a quick experiment and benchmark linking<br>
firefox with the last 1000 revisions or so.<br>
<br>
I used the last 1000 revision, regardless of what they changed. That<br>
way we can get an idea of the fluctuation to expect from measurement<br>
bias when unrelated things change.<br>
<br>
The results are attached. Data has 3 columns. The first one is the<br>
revision, the second one is the time and the third is the percentage<br>
std dev reported by perf over 10 runs.<br>
<br>
The plot was created with gnuplot:<br>
<br>
plot "data" using 1:2:($3 * $2 /100) title "time" with errorlines<br>
<br>
It is interesting to see that the variation from commit to commit is<br>
much bigger than the variation in a single commit,</blockquote><div><br></div><div>This is a great observation. Good idea adding that into the visualization.</div><div>To be fair, you also have a very reproducible setup ;)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> but the graph<br>
allows us to find some significant commits. In this case, they were:<br>
<br>
r303689: The test has --buildit ... --build-id=none, and now the<br>
second one is used.<br>
<br>
r303925: Uses CachedHashStringRef again for comdat signatures.<br></blockquote><div><br></div><div>Awesome, thanks for doing the measurements and the visualization/analysis!</div><div>Our performance seems very healthy.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers,<br>
Rafael<br>
<br>
P.S.: It would be truly awesome if someone could setup a bot that does<br>
this over various tests.<br></blockquote><div><br></div><div>Scanning around internally here at Google a while back, it seems like we have some infrastructure that should allow doing this fairly easily, modulo a bit of yak shaving. IIRC, it required fiddling around with the internal build system to fix some layering violations due to libLLDELF.a's elf::link function being exported by some random header in include/ instead of a header in ELF/ where the cc_library is defined (which would require some CMake changes upstream too). It's on my todo list though to be honest it's probably a "I'll hopefully get to it this year" type thing.</div><div>(the benchmarking infrastructure hooks into the build system and runs C++ functions so it would need to go through elf::link).</div><div><br></div><div>I'm not sure if the results of this infrastructure can be plugged into some automatic external-facing report, but it would at least make it easy for me, Rui, and any other interested googlers to periodically check in on it. The granularity would be limited to the weekly (or whatever) LLVM import though.</div><div><br></div><div>-- Sean Silva </div></div><br></div></div>