MFC r266208: Speed up pmcstat by improving string hash

In one case generating callgraph output from a 24MB system-wide sampling
  data file took 17.4 seconds on average.  Profiling showed pmcstat
  spending a lot of time in strcmp, due to hash collisions.

  Replacing the XOR-only hash with FNV-1a reduces the run time for my
  test by 40%.
This commit is contained in:
emaste 2014-05-23 17:46:00 +00:00
parent 80044281eb
commit e761352067

View File

@ -307,10 +307,10 @@ pmcstat_stats_reset(int reset_global)
static int
pmcstat_string_compute_hash(const char *s)
{
int hash;
unsigned hash;
for (hash = 0; *s; s++)
hash ^= *s;
for (hash = 2166136261; *s; s++)
hash = (hash ^ *s) * 16777619;
return (hash & PMCSTAT_HASH_MASK);
}