89 lines
3.0 KiB
Java
89 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2012 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;
|
|
|
|
/**
|
|
* Common benchmarking utilities.
|
|
*
|
|
* @author Christopher Swenson
|
|
* @author Louis Wasserman
|
|
*/
|
|
class BenchmarkHelpers {
|
|
private static final String WHITESPACE_CHARACTERS =
|
|
"\u00a0\u180e\u202f\t\n\013\f\r \u0085"
|
|
+ "\u1680\u2028\u2029\u205f\u3000\u2000\u2001\u2002\u2003\u2004\u2005"
|
|
+ "\u2006\u2007\u2008\u2009\u200a";
|
|
private static final String ASCII_CHARACTERS;
|
|
|
|
static {
|
|
int spaceInAscii = 32;
|
|
int sevenBitAsciiMax = 128;
|
|
StringBuilder sb = new StringBuilder(sevenBitAsciiMax - spaceInAscii);
|
|
for (int ch = spaceInAscii; ch < sevenBitAsciiMax; ch++) {
|
|
sb.append((char) ch);
|
|
}
|
|
ASCII_CHARACTERS = sb.toString();
|
|
}
|
|
|
|
private static final String ALL_DIGITS;
|
|
|
|
static {
|
|
StringBuilder sb = new StringBuilder();
|
|
String zeros =
|
|
"0\u0660\u06f0\u07c0\u0966\u09e6\u0a66\u0ae6\u0b66\u0be6\u0c66"
|
|
+ "\u0ce6\u0d66\u0e50\u0ed0\u0f20\u1040\u1090\u17e0\u1810\u1946"
|
|
+ "\u19d0\u1b50\u1bb0\u1c40\u1c50\ua620\ua8d0\ua900\uaa50\uff10";
|
|
for (char base : zeros.toCharArray()) {
|
|
for (int offset = 0; offset < 10; offset++) {
|
|
sb.append((char) (base + offset));
|
|
}
|
|
}
|
|
ALL_DIGITS = sb.toString();
|
|
}
|
|
|
|
/** Sample CharMatcher instances for benchmarking. */
|
|
public enum SampleMatcherConfig {
|
|
WHITESPACE(CharMatcher.whitespace(), WHITESPACE_CHARACTERS),
|
|
HASH(CharMatcher.is('#'), "#"),
|
|
ASCII(CharMatcher.ascii(), ASCII_CHARACTERS),
|
|
WESTERN_DIGIT("0123456789"),
|
|
ALL_DIGIT(CharMatcher.digit(), ALL_DIGITS),
|
|
OPS_5("+-*/%"),
|
|
HEX_16(CharMatcher.inRange('0', '9').or(CharMatcher.inRange('A', 'F')), "0123456789ABCDEF"),
|
|
HEX_22(
|
|
CharMatcher.inRange('0', '9')
|
|
.or(CharMatcher.inRange('A', 'F'))
|
|
.or(CharMatcher.inRange('a', 'f')),
|
|
"0123456789ABCDEFabcdef"),
|
|
GERMAN_59(
|
|
CharMatcher.inRange('a', 'z')
|
|
.or(CharMatcher.inRange('A', 'Z'))
|
|
.or(CharMatcher.anyOf("äöüßÄÖÜ")),
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüßÄÖÜ");
|
|
|
|
public final CharMatcher matcher;
|
|
public final String matchingChars;
|
|
|
|
SampleMatcherConfig(String matchingChars) {
|
|
this(CharMatcher.anyOf(matchingChars), matchingChars);
|
|
}
|
|
|
|
SampleMatcherConfig(CharMatcher matcher, String matchingChars) {
|
|
this.matcher = matcher;
|
|
this.matchingChars = matchingChars;
|
|
}
|
|
}
|
|
}
|