17dd252788645e940eada959bdde927426e2531c9Paul Duffin/*
27dd252788645e940eada959bdde927426e2531c9Paul Duffin * Copyright (C) 2010 The Guava Authors
37dd252788645e940eada959bdde927426e2531c9Paul Duffin *
47dd252788645e940eada959bdde927426e2531c9Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License");
57dd252788645e940eada959bdde927426e2531c9Paul Duffin * you may not use this file except in compliance with the License.
67dd252788645e940eada959bdde927426e2531c9Paul Duffin * You may obtain a copy of the License at
77dd252788645e940eada959bdde927426e2531c9Paul Duffin *
87dd252788645e940eada959bdde927426e2531c9Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0
97dd252788645e940eada959bdde927426e2531c9Paul Duffin *
107dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unless required by applicable law or agreed to in writing, software
117dd252788645e940eada959bdde927426e2531c9Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS,
127dd252788645e940eada959bdde927426e2531c9Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137dd252788645e940eada959bdde927426e2531c9Paul Duffin * See the License for the specific language governing permissions and
147dd252788645e940eada959bdde927426e2531c9Paul Duffin * limitations under the License.
157dd252788645e940eada959bdde927426e2531c9Paul Duffin */
167dd252788645e940eada959bdde927426e2531c9Paul Duffin
177dd252788645e940eada959bdde927426e2531c9Paul Duffinpackage com.google.common.base;
187dd252788645e940eada959bdde927426e2531c9Paul Duffin
190888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.caliper.Benchmark;
207dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.base.Objects;
217dd252788645e940eada959bdde927426e2531c9Paul Duffin
227dd252788645e940eada959bdde927426e2531c9Paul Duffin/**
237dd252788645e940eada959bdde927426e2531c9Paul Duffin * Some microbenchmarks for the {@link Objects} class.
247dd252788645e940eada959bdde927426e2531c9Paul Duffin *
257dd252788645e940eada959bdde927426e2531c9Paul Duffin * @author Ben L. Titzer
267dd252788645e940eada959bdde927426e2531c9Paul Duffin */
270888a09821a98ac0680fad765217302858e70fa4Paul Duffinpublic class ObjectsBenchmark {
287dd252788645e940eada959bdde927426e2531c9Paul Duffin
297dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final Integer I0 = -45;
307dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final Integer I1 = -1;
317dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final Integer I2 = 3;
327dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final String S0 = "3";
337dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final String S1 = "Ninety five";
347dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final String S2 = "44 one million";
357dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final String S3 = "Lowly laundry lefties";
367dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final String S4 = "89273487U#*&#";
377dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final Double D0 = 9.234d;
387dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static final Double D1 = -1.2e55;
397dd252788645e940eada959bdde927426e2531c9Paul Duffin
400888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @Benchmark int hashString_2(int reps) {
417dd252788645e940eada959bdde927426e2531c9Paul Duffin    int dummy = 0;
427dd252788645e940eada959bdde927426e2531c9Paul Duffin    for (int i = 0; i < reps; i++) {
437dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(S0, S1);
447dd252788645e940eada959bdde927426e2531c9Paul Duffin    }
457dd252788645e940eada959bdde927426e2531c9Paul Duffin    return dummy;
467dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
477dd252788645e940eada959bdde927426e2531c9Paul Duffin
480888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @Benchmark int hashString_3(int reps) {
497dd252788645e940eada959bdde927426e2531c9Paul Duffin    int dummy = 0;
507dd252788645e940eada959bdde927426e2531c9Paul Duffin    for (int i = 0; i < reps; i++) {
517dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(S0, S1, S2);
527dd252788645e940eada959bdde927426e2531c9Paul Duffin    }
537dd252788645e940eada959bdde927426e2531c9Paul Duffin    return dummy;
547dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
557dd252788645e940eada959bdde927426e2531c9Paul Duffin
560888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @Benchmark int hashString_4(int reps) {
577dd252788645e940eada959bdde927426e2531c9Paul Duffin    int dummy = 0;
587dd252788645e940eada959bdde927426e2531c9Paul Duffin    for (int i = 0; i < reps; i++) {
597dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(S0, S1, S2, S3);
607dd252788645e940eada959bdde927426e2531c9Paul Duffin    }
617dd252788645e940eada959bdde927426e2531c9Paul Duffin    return dummy;
627dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
637dd252788645e940eada959bdde927426e2531c9Paul Duffin
640888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @Benchmark int hashString_5(int reps) {
657dd252788645e940eada959bdde927426e2531c9Paul Duffin    int dummy = 0;
667dd252788645e940eada959bdde927426e2531c9Paul Duffin    for (int i = 0; i < reps; i++) {
677dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(S0, S1, S2, S3, S4);
687dd252788645e940eada959bdde927426e2531c9Paul Duffin    }
697dd252788645e940eada959bdde927426e2531c9Paul Duffin    return dummy;
707dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
717dd252788645e940eada959bdde927426e2531c9Paul Duffin
720888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @Benchmark int hashMixed_5(int reps) {
737dd252788645e940eada959bdde927426e2531c9Paul Duffin    int dummy = 0;
747dd252788645e940eada959bdde927426e2531c9Paul Duffin    for (int i = 0; i < reps; i++) {
757dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(I2, S1, D1, S2, I0);
767dd252788645e940eada959bdde927426e2531c9Paul Duffin      dummy += Objects.hashCode(D0, I1, S3, I2, S0);
777dd252788645e940eada959bdde927426e2531c9Paul Duffin    }
787dd252788645e940eada959bdde927426e2531c9Paul Duffin    return dummy;
797dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
807dd252788645e940eada959bdde927426e2531c9Paul Duffin}
81