<div dir="ltr"><div dir="ltr">On Fri, Oct 9, 2020 at 2:29 AM Siva Chandra <<a href="mailto:sivachandra@google.com">sivachandra@google.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">+cc gchatelet for #3 under Q&A<br><br>
3. What codebase did you analyze for your statistics on uses of memcpy, etc.?<br>
A. As far as I know, it was done over Google internal code bases. I<br>
copied this mail to Guillaume who did this actual work. So, he might<br>
be able to throw more light on this.<br></blockquote><div><br></div>We have gathered statistics for several important binaries at Google (servers, databases, realtime and batch jobs). We are sharing the observed probability distributions inside llvm-libc[1] and plan to provide a way to "score" the implementations with these distributions.<br>We currently offer 9 different profiles for `memcpy` and `memcmp` (4 for `memset`). We may add more of them if we feel they are representative enough.<br><br>The key takeaway here is that most sizes are small as described in [2] and so it is important to optimize for them. To be clear it does not mean that we don't care about larger sizes (large copies *must* be efficient as well) but overall it's on the small sizes that we are likely to gain.<br><br>Thanks,<br>Guillaume Chatelet<br><br>1. <a href="https://reviews.llvm.org/D89401">https://reviews.llvm.org/D89401</a><br>2. <a href="https://github.com/llvm/llvm-project/tree/master/libc/benchmarks#benchmarking-regimes">https://github.com/llvm/llvm-project/tree/master/libc/benchmarks#benchmarking-regimes</a><br><div> </div></div></div>