<p dir="ltr"><br>
</p>
<p dir="ltr"></p>
<p dir="ltr">On Thu, Oct 2, 2014, 19:37 Alexander Kornienko <<a href="mailto:alexfh@google.com">alexfh@google.com</a>> wrote:</p>
<blockquote><p dir="ltr">One important thing this patch does, it splits isBaseOf with and without distance to avoid runtime selection.</p>
<p dir="ltr">As for the caching, I believe it doesn't matter much, as on my test (lib/Sema/SemaOverload.cpp) most of the calls were asking one of a small number of table cells. Here's some data:</p>
<p dir="ltr">  * total calls: ~39M<br>
  * total number of pairs asked: 1646<br>
  * 103 mostly asked cells cover 80% of all calls<br>
  * 219 mostly asked cells cover 90% of all calls<br>
  * 50 mostly asked rows (< 6kB) cover 97% of all calls</p>
</blockquote>
<p dir="ltr"></p>
<p dir="ltr">if they're spread out you might still hit 50 different pages... </p>
<blockquote><p dir="ltr"></p>
<p dir="ltr">The other solutions you've proposed are also interesting (especially #4 which is the most elegant, but requires some care in arranging the primes), but this one is the most straightforward, IMO.</p>
<p dir="ltr"><a href="http://reviews.llvm.org/D5577">http://reviews.llvm.org/D5577</a></p>
</blockquote>
<p dir="ltr"><br>
</p>