aboutsummaryrefslogtreecommitdiffstats
path: root/guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java')
-rw-r--r--guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java138
1 files changed, 0 insertions, 138 deletions
diff --git a/guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java b/guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java
deleted file mode 100644
index 0820bc0..0000000
--- a/guava-tests/benchmark/com/google/common/primitives/UnsignedLongsBenchmark.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2011 The Guava Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.common.primitives;
-
-import com.google.caliper.Runner;
-import com.google.caliper.SimpleBenchmark;
-
-import java.util.Random;
-
-/**
- * Benchmarks for certain methods of {@code UnsignedLongs}.
- *
- * @author Eamonn McManus
- */
-public class UnsignedLongsBenchmark extends SimpleBenchmark {
- private static final int ARRAY_SIZE = 0x10000;
- private static final int ARRAY_MASK = 0x0ffff;
- private static final Random RANDOM_SOURCE = new Random(314159265358979L);
- private static final long[] longs = new long[ARRAY_SIZE];
- private static final long[] divisors = new long[ARRAY_SIZE];
- private static final String[] decimalStrings = new String[ARRAY_SIZE];
- private static final String[] binaryStrings = new String[ARRAY_SIZE];
- private static final String[] hexStrings = new String[ARRAY_SIZE];
- private static final String[] prefixedHexStrings = new String[ARRAY_SIZE];
-
- @Override
- protected void setUp() {
- for (int i = 0; i < ARRAY_SIZE; i++) {
- longs[i] = random();
- divisors[i] = randomDivisor(longs[i]);
- decimalStrings[i] = UnsignedLongs.toString(longs[i]);
- binaryStrings[i] = UnsignedLongs.toString(longs[i], 2);
- hexStrings[i] = UnsignedLongs.toString(longs[i], 16);
- prefixedHexStrings[i] = "0x" + hexStrings[i];
- }
- }
-
- public long timeDivide(int reps) {
- long tmp = 0;
- for (int i = 0; i < reps; i++) {
- int j = i & ARRAY_MASK;
- tmp += UnsignedLongs.divide(longs[j], divisors[j]);
- }
- return tmp;
- }
-
- public long timeRemainder(int reps) {
- long tmp = 0;
- for (int i = 0; i < reps; i++) {
- int j = i & ARRAY_MASK;
- tmp += UnsignedLongs.remainder(longs[j], divisors[j]);
- }
- return tmp;
- }
-
- public long timeParseUnsignedLong(int reps) {
- long tmp = 0;
- // Given that we make three calls per pass, we scale reps down in order
- // to do a comparable amount of work to other measurements.
- int scaledReps = reps / 3 + 1;
- for (int i = 0; i < scaledReps; i++) {
- int j = i & ARRAY_MASK;
- tmp += UnsignedLongs.parseUnsignedLong(decimalStrings[j]);
- tmp += UnsignedLongs.parseUnsignedLong(hexStrings[j], 16);
- tmp += UnsignedLongs.parseUnsignedLong(binaryStrings[j], 2);
- }
- return tmp;
- }
-
- public long timeParseDecode10(int reps) {
- long tmp = 0;
- for (int i = 0; i < reps; i++) {
- int j = i & ARRAY_MASK;
- tmp += UnsignedLongs.decode(decimalStrings[j]);
- }
- return tmp;
- }
-
- public long timeParseDecode16(int reps) {
- long tmp = 0;
- for (int i = 0; i < reps; i++) {
- int j = i & ARRAY_MASK;
- tmp += UnsignedLongs.decode(prefixedHexStrings[j]);
- }
- return tmp;
- }
-
- public int timeToString(int reps) {
- int tmp = 0;
- // Given that we make three calls per pass, we scale reps down in order
- // to do a comparable amount of work to other measurements.
- int scaledReps = reps / 3 + 1;
- for (int i = 0; i < scaledReps; i++) {
- int j = i & ARRAY_MASK;
- long x = longs[j];
- tmp += UnsignedLongs.toString(x).length();
- tmp += UnsignedLongs.toString(x, 16).length();
- tmp += UnsignedLongs.toString(x, 2).length();
- }
- return tmp;
- }
-
- private static long random() {
- return RANDOM_SOURCE.nextLong();
- }
-
- // A random value that cannot be 0 and that is unsigned-less-than or equal
- // to the given dividend, so that we don't have half of our divisions being
- // trivial because the divisor is bigger than the dividend.
- // Using remainder here does not give us a uniform distribution but it should
- // not have a big impact on the measurement.
- private static long randomDivisor(long dividend) {
- long r = RANDOM_SOURCE.nextLong();
- if (dividend == -1) {
- return r;
- } else {
- return UnsignedLongs.remainder(r, dividend + 1);
- }
- }
-
- public static void main(String[] args) {
- Runner.main(UnsignedLongsBenchmark.class, args);
- }
-}