Author: emaste
Date: Thu Jun 12 17:08:04 2014
New Revision: 267415
URL: http://svnweb.freebsd.org/changeset/base/267415

Log:
  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%.
  
  Approved by:  re

Modified:
  stable/9/usr.sbin/pmcstat/pmcstat_log.c
Directory Properties:
  stable/9/usr.sbin/pmcstat/   (props changed)

Modified: stable/9/usr.sbin/pmcstat/pmcstat_log.c
==============================================================================
--- stable/9/usr.sbin/pmcstat/pmcstat_log.c     Thu Jun 12 17:06:50 2014        
(r267414)
+++ stable/9/usr.sbin/pmcstat/pmcstat_log.c     Thu Jun 12 17:08:04 2014        
(r267415)
@@ -301,10 +301,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);
 }
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to