diff options
Diffstat (limited to 'android/guava-tests/benchmark/com/google/common/base/AsciiBenchmark.java')
-rw-r--r-- | android/guava-tests/benchmark/com/google/common/base/AsciiBenchmark.java | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/android/guava-tests/benchmark/com/google/common/base/AsciiBenchmark.java b/android/guava-tests/benchmark/com/google/common/base/AsciiBenchmark.java deleted file mode 100644 index 6ed8006ee..000000000 --- a/android/guava-tests/benchmark/com/google/common/base/AsciiBenchmark.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2010 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.base; - -import com.google.caliper.BeforeExperiment; -import com.google.caliper.Benchmark; -import com.google.caliper.Param; -import com.google.common.collect.Lists; -import com.google.common.primitives.Chars; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Random; - -/** - * Benchmarks for the ASCII class. - * - * @author Kevin Bourrillion - */ -public class AsciiBenchmark { - private static final String ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - private static final String NONALPHA = "0123456789`~-_=+[]{}|;:',.<>/?!@#$%^&*()\"\\"; - - @Param({"20", "2000"}) - int size; - - @Param({"2", "20"}) - int nonAlphaRatio; // one non-alpha char per this many chars - - @Param boolean noWorkToDo; - - Random random; - String testString; - - @BeforeExperiment - void setUp() { - random = new Random(0xdeadbeef); // fix the seed so results are comparable across runs - - int nonAlpha = size / nonAlphaRatio; - int alpha = size - nonAlpha; - - List<Character> chars = Lists.newArrayListWithCapacity(size); - for (int i = 0; i < alpha; i++) { - chars.add(randomAlpha()); - } - for (int i = 0; i < nonAlpha; i++) { - chars.add(randomNonAlpha()); - } - Collections.shuffle(chars, random); - char[] array = Chars.toArray(chars); - this.testString = new String(array); - } - - private char randomAlpha() { - return ALPHA.charAt(random.nextInt(ALPHA.length())); - } - - private char randomNonAlpha() { - return NONALPHA.charAt(random.nextInt(NONALPHA.length())); - } - - @Benchmark - int asciiStringToUpperCase(int reps) { - String string = noWorkToDo ? Ascii.toUpperCase(testString) : testString; - - int dummy = 0; - for (int i = 0; i < reps; i++) { - dummy += Ascii.toUpperCase(string).length(); - } - return dummy; - } - - @Benchmark - int asciiCharSequenceToUpperCase(int reps) { - String string = noWorkToDo ? charSequenceToUpperCase(testString) : testString; - - int dummy = 0; - for (int i = 0; i < reps; i++) { - dummy += charSequenceToUpperCase(string).length(); - } - return dummy; - } - - @Benchmark - int stringToUpperCase(int reps) { - String string = noWorkToDo ? testString.toUpperCase(Locale.US) : testString; - - int dummy = 0; - for (int i = 0; i < reps; i++) { - dummy += string.toUpperCase(Locale.US).length(); - } - return dummy; - } - - @Benchmark - boolean equalsIgnoreCaseCharSequence(int reps) { - // This benchmark has no concept of "noWorkToDo". - String upperString = testString.toUpperCase(); - CharSequence testSeq = new StringBuilder(testString); - CharSequence upperSeq = new StringBuilder(upperString); - CharSequence[] lhs = new CharSequence[] {testString, testSeq, testString, testSeq}; - CharSequence[] rhs = new CharSequence[] {upperString, upperString, upperSeq, upperSeq}; - - boolean dummy = false; - for (int i = 0; i < reps; i++) { - dummy ^= Ascii.equalsIgnoreCase(lhs[i & 0x3], rhs[i & 0x3]); - } - return dummy; - } - - @Benchmark - boolean equalsIgnoreCaseStringOnly(int reps) { - // This benchmark has no concept of "noWorkToDo". - String lhs = testString; - String rhs = testString.toUpperCase(); - - boolean dummy = false; - for (int i = 0; i < reps; i++) { - dummy ^= Ascii.equalsIgnoreCase(lhs, rhs); - } - return dummy; - } - - @Benchmark - boolean equalsIgnoreCaseJDK(int reps) { - // This benchmark has no concept of "noWorkToDo". - String lhs = testString; - String rhs = testString.toUpperCase(); - - boolean dummy = false; - for (int i = 0; i < reps; i++) { - dummy ^= lhs.equalsIgnoreCase(rhs); - } - return dummy; - } - - @Benchmark - boolean isUpperCase(int reps) { - // This benchmark has no concept of "noWorkToDo". - char[] chars = testString.toCharArray(); - - boolean dummy = false; - for (int i = 0; i < reps; i++) { - for (int n = 0; n < chars.length; n++) { - dummy ^= Ascii.isUpperCase(chars[n]); - } - } - return dummy; - } - - static String charSequenceToUpperCase(CharSequence chars) { - char[] newChars = new char[chars.length()]; - for (int i = 0; i < newChars.length; i++) { - newChars[i] = Ascii.toUpperCase(chars.charAt(i)); - } - return String.valueOf(newChars); - } -} |