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:
parent
06e36338ca
commit
dc17b1feaa
@ -307,10 +307,10 @@ pmcstat_stats_reset(int reset_global)
|
|||||||
static int
|
static int
|
||||||
pmcstat_string_compute_hash(const char *s)
|
pmcstat_string_compute_hash(const char *s)
|
||||||
{
|
{
|
||||||
int hash;
|
unsigned hash;
|
||||||
|
|
||||||
for (hash = 0; *s; s++)
|
for (hash = 2166136261; *s; s++)
|
||||||
hash ^= *s;
|
hash = (hash ^ *s) * 16777619;
|
||||||
|
|
||||||
return (hash & PMCSTAT_HASH_MASK);
|
return (hash & PMCSTAT_HASH_MASK);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user