aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerban Constantinescu <serban.constantinescu@linaro.org>2016-09-06 14:55:35 +0000
committerLinaro Android Code Review <android-review@review.linaro.org>2016-09-06 14:55:35 +0000
commit8b4ac36f9143477148a9ea83c3e00998fc2c02fd (patch)
tree0873e124d8876134f50a3f550f86405152e5ff75
parentf5ffdf9329bbda4206b7d969627ed22d89f69c13 (diff)
parentec38f5932797b7c81c893669907b40664e8ebc39 (diff)
downloadart-testing-8b4ac36f9143477148a9ea83c3e00998fc2c02fd.tar.gz
Merge "Fix StringOps micro benchmark for test IndexOf/IndexOfAfter."
-rw-r--r--benchmarks/micro/StringOps.java80
1 files changed, 70 insertions, 10 deletions
diff --git a/benchmarks/micro/StringOps.java b/benchmarks/micro/StringOps.java
index e37ed7e..2b6156d 100644
--- a/benchmarks/micro/StringOps.java
+++ b/benchmarks/micro/StringOps.java
@@ -37,6 +37,10 @@ public class StringOps {
private static int RANDOM_STRING_512 = 4;
private static int NUM_LENGTH_TESTS = 5;
+ private static char MIN_RANDOM_CHAR = 65;
+ private static char MAX_RANDOM_CHAR = 123;
+ private static char searchChar;
+
/* Intentionally use the same seed each time for consistency across benchmark runs. */
private static int SAME_SEED = 0;
@@ -66,11 +70,12 @@ public class StringOps {
private static String generateRandomString(int len, Random rnd) {
StringBuilder sb = new StringBuilder();
- for (int i = 0; i < len; i++) {
+ for (int i = 0; i < len - 1; i++) {
/* Compose random string data from upper and lower case english alphabet entries plus a few
* harmless characters in-between. */
- sb.append(Character.valueOf((char)(65 + rnd.nextInt(58))));
+ sb.append(Character.valueOf((char)(MIN_RANDOM_CHAR + rnd.nextInt(MAX_RANDOM_CHAR - MIN_RANDOM_CHAR))));
}
+ sb.append(Character.valueOf(MAX_RANDOM_CHAR));
return sb.toString();
}
@@ -83,6 +88,7 @@ public class StringOps {
}
static {
+ searchChar = MAX_RANDOM_CHAR;
generateRandomStrings(rnd, stringData);
generateRandomStrings(rndAlt, stringDataAlt);
}
@@ -401,10 +407,33 @@ public class StringOps {
* String.indexOf
*/
- public void timeStringIndexOf(int iterations) {
- char c = stringData[RANDOM_STRING_512].charAt(511);
+ public void timeStringIndexOf008(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfResult += stringData[RANDOM_STRING_8].indexOf(searchChar);
+ }
+ }
+
+ public void timeStringIndexOf016(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfResult += stringData[RANDOM_STRING_16].indexOf(searchChar);
+ }
+ }
+
+ public void timeStringIndexOf032(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfResult += stringData[RANDOM_STRING_32].indexOf(searchChar);
+ }
+ }
+
+ public void timeStringIndexOf128(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfResult += stringData[RANDOM_STRING_128].indexOf(searchChar);
+ }
+ }
+
+ public void timeStringIndexOf512(int iterations) {
for (int i = 0; i < iterations; i++) {
- stringIndexOfResult += stringData[RANDOM_STRING_512].indexOf(c);
+ stringIndexOfResult += stringData[RANDOM_STRING_512].indexOf(searchChar);
}
}
@@ -412,10 +441,33 @@ public class StringOps {
* String.indexOfAfter
*/
- public void timeStringIndexOfAfter(int iterations) {
- char c = stringData[RANDOM_STRING_512].charAt(511);
+ public void timeStringIndexOfAfter008(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfAfterResult += stringData[RANDOM_STRING_8].indexOf(searchChar, 1);
+ }
+ }
+
+ public void timeStringIndexOfAfter016(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfAfterResult += stringData[RANDOM_STRING_16].indexOf(searchChar, 1);
+ }
+ }
+
+ public void timeStringIndexOfAfter032(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfAfterResult += stringData[RANDOM_STRING_32].indexOf(searchChar, 1);
+ }
+ }
+
+ public void timeStringIndexOfAfter128(int iterations) {
+ for (int i = 0; i < iterations; i++) {
+ stringIndexOfAfterResult += stringData[RANDOM_STRING_128].indexOf(searchChar, 1);
+ }
+ }
+
+ public void timeStringIndexOfAfter512(int iterations) {
for (int i = 0; i < iterations; i++) {
- stringIndexOfAfterResult += stringData[RANDOM_STRING_512].indexOf(c, 1);
+ stringIndexOfAfterResult += stringData[RANDOM_STRING_512].indexOf(searchChar, 1);
}
}
@@ -627,8 +679,16 @@ public class StringOps {
obj.timeStringRegionMatchesIgnoreCase128(ITER_COUNT);
obj.timeStringRegionMatchesIgnoreCase512(ITER_COUNT);
obj.timeStringCharAt(ITER_COUNT);
- obj.timeStringIndexOf(ITER_COUNT);
- obj.timeStringIndexOfAfter(ITER_COUNT);
+ obj.timeStringIndexOf008(ITER_COUNT);
+ obj.timeStringIndexOf016(ITER_COUNT);
+ obj.timeStringIndexOf032(ITER_COUNT);
+ obj.timeStringIndexOf128(ITER_COUNT);
+ obj.timeStringIndexOf512(ITER_COUNT);
+ obj.timeStringIndexOfAfter008(ITER_COUNT);
+ obj.timeStringIndexOfAfter016(ITER_COUNT);
+ obj.timeStringIndexOfAfter032(ITER_COUNT);
+ obj.timeStringIndexOfAfter128(ITER_COUNT);
+ obj.timeStringIndexOfAfter512(ITER_COUNT);
obj.timeStringNewStringFromBytes008(ITER_COUNT);
obj.timeStringNewStringFromBytes016(ITER_COUNT);
obj.timeStringNewStringFromBytes032(ITER_COUNT);