[ https://issues.apache.org/jira/browse/HBASE-4206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13086526#comment-13086526 ]
Ron Yang commented on HBASE-4206: --------------------------------- Seems about 35% faster on my MBP core i7 osx 10.6: java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode) 0% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=5} 29.96 ns; ?=0.45 ns @ 10 trials 6% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=5} 15.03 ns; ?=0.13 ns @ 3 trials 13% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=10} 32.73 ns; ?=0.06 ns @ 3 trials 19% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=10} 17.75 ns; ?=0.04 ns @ 3 trials 25% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=15} 55.01 ns; ?=0.20 ns @ 3 trials 31% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=15} 26.48 ns; ?=0.26 ns @ 3 trials 38% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=20} 59.97 ns; ?=0.17 ns @ 3 trials 44% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=20} 29.21 ns; ?=0.12 ns @ 3 trials 50% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=500} 1103.94 ns; ?=5.87 ns @ 3 trials 56% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=500} 710.87 ns; ?=0.73 ns @ 3 trials 63% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=1000} 2206.56 ns; ?=5.04 ns @ 3 trials 69% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=1000} 1400.48 ns; ?=5.44 ns @ 3 trials 75% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=10000} 21632.90 ns; ?=38.49 ns @ 3 trials 81% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=10000} 13975.43 ns; ?=65.42 ns @ 3 trials 88% Scenario{vm=java, trial=0, benchmark=JenkinsOld, len=100000} 216426.33 ns; ?=1378.41 ns @ 3 trials 94% Scenario{vm=java, trial=0, benchmark=JenkinsNew, len=100000} 139348.44 ns; ?=594.38 ns @ 3 trials len benchmark ns linear runtime 5 JenkinsOld 30.0 = 5 JenkinsNew 15.0 = 10 JenkinsOld 32.7 = 10 JenkinsNew 17.7 = 15 JenkinsOld 55.0 = 15 JenkinsNew 26.5 = 20 JenkinsOld 60.0 = 20 JenkinsNew 29.2 = 500 JenkinsOld 1103.9 = 500 JenkinsNew 710.9 = 1000 JenkinsOld 2206.6 = 1000 JenkinsNew 1400.5 = 10000 JenkinsOld 21632.9 == 10000 JenkinsNew 13975.4 = 100000 JenkinsOld 216426.3 ============================== 100000 JenkinsNew 139348.4 =================== Caliper benchmark source: public static class Benchmark6 extends SimpleBenchmark { @Param({"5", "10", "15", "20", "500", "1000", "10000", "100000"}) int len; byte[] bs; @Override protected void setUp() { Random r = new Random(); bs = new byte[len]; r.nextBytes(bs); } public boolean timeJenkinsOld(int reps) { int h = 0; for (int x = 0; x < reps; x++) { h += JenkinsHashOld.hash(bs, h); } return true; } public boolean timeJenkinsNew(int reps) { int h = 0; JenkinsHashNew jh = new JenkinsHashNew(); for (int x = 0; x < reps; x++) { h += jh.hash(bs, 0, len, h); } return true; } } > jenkins hash implementation uses longs unnecessarily > ---------------------------------------------------- > > Key: HBASE-4206 > URL: https://issues.apache.org/jira/browse/HBASE-4206 > Project: HBase > Issue Type: Improvement > Components: util > Reporter: Ron Yang > Priority: Minor > Attachments: ryang.patch > > > I don't believe you need to use long for a,b,c and as a result no longer need > to & against INT_MASK. > At a minimum the private static longs should be made final, and the "main" > method should not print the absolute value of the hash but instead use > something like Integer.toHexString -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira