diff options
author | Vladimir Marko <vmarko@google.com> | 2016-11-03 13:25:44 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2016-11-07 09:58:00 +0000 |
commit | a4bf5e09546bfccd77f12b04362b314e189c2011 (patch) | |
tree | 6c7d9b237c09b8c8bfa7e6df79e060c104f777d5 | |
parent | 2ab98309c0fc7b3c7451205b2371db5c34b05d49 (diff) |
Add String.indexOf() benchmark.
Test: vogar --benchmark art/benchmark/string-indexof/src/StringIndexOfBenchmark.java
Change-Id: I57c8c9c7ede2b0e86a6142e713b4e8be094c82ce
-rw-r--r-- | benchmark/string-indexof/info.txt | 1 | ||||
-rw-r--r-- | benchmark/string-indexof/src/StringIndexOfBenchmark.java | 122 |
2 files changed, 123 insertions, 0 deletions
diff --git a/benchmark/string-indexof/info.txt b/benchmark/string-indexof/info.txt new file mode 100644 index 0000000000..cc042172fb --- /dev/null +++ b/benchmark/string-indexof/info.txt @@ -0,0 +1 @@ +Benchmarks for repeating String.indexOf() instructions in a loop. diff --git a/benchmark/string-indexof/src/StringIndexOfBenchmark.java b/benchmark/string-indexof/src/StringIndexOfBenchmark.java new file mode 100644 index 0000000000..481a27a051 --- /dev/null +++ b/benchmark/string-indexof/src/StringIndexOfBenchmark.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * 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. + */ + +public class StringIndexOfBenchmark { + public static final String string36 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // length = 36 + + public void timeIndexOf0(int count) { + final char c = '0'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf1(int count) { + final char c = '1'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf2(int count) { + final char c = '2'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf3(int count) { + final char c = '3'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf4(int count) { + final char c = '4'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf7(int count) { + final char c = '7'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf8(int count) { + final char c = '8'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOfF(int count) { + final char c = 'F'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOfG(int count) { + final char c = 'G'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOfV(int count) { + final char c = 'V'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOfW(int count) { + final char c = 'W'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + public void timeIndexOf_(int count) { + final char c = '_'; + String s = string36; + for (int i = 0; i < count; ++i) { + $noinline$indexOf(s, c); + } + } + + static int $noinline$indexOf(String s, char c) { + if (doThrow) { throw new Error(); } + return s.indexOf(c); + } + + public static boolean doThrow = false; +} |