[PATCH] InstrProf: Calculate a better function hash

Chandler Carruth chandlerc at google.com
Tue Mar 25 14:30:16 PDT 2014


On Tue, Mar 25, 2014 at 1:59 PM, Duncan P. N. Exon Smith <
dexonsmith at apple.com> wrote:

>   2. Grab the upper 64 bits of MD5.
>

How about this.

Pack the bits of the enum into a 64-bit integer. When we fill the integer,
spin up an MD5 context, and shove the integer through it, rinse, repeat.
When done, if you have an MD5, take the upper 64-bits. If not, just take
the integer.

This should incur no cost for the most common case (only a few CFG
elements) and no collisions roughly ever, and scale nicely due to using
64-bit chunks.

s/MD5/any other stable hashing function really/ -- my hope is that after
doing this, the performance of the case where all the CFG elements didn't
just serialize is relatively unimportant.

Then, benchmark it, and if MD5 is a problem, revisit it with faster and/or
lower overhead algorithms which still have well known and fixed results
such as MD4, blake2, etc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140325/d31c9b2b/attachment.html>


More information about the cfe-commits mailing list