summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorYi Kong <yikong@google.com>2016-04-25 18:40:25 +0100
committerYi Kong <yikong@google.com>2016-04-25 22:07:57 +0000
commita8d952d4388d5173dedc3a80381328fd9d7c5f07 (patch)
treec5b01d2062ba24d0320b571471c17f9612cb84b8 /benchmarks
parent1a3915fcd7c5bcf5f2ab5834e9967e5c32b5e183 (diff)
Optimize StringBuilder.append for String with range
by using String.charsAt to avoid performing 1-by-1 copying. Also adds a benchmark testing append for substring. Before: Trial Report (1 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=1}} Results: runtime(ns): min=231.16, 1st qu.=233.24, median=244.20, mean=241.41, 3rd qu.=247.49, max=252.71 Trial Report (2 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=10}} Results: runtime(ns): min=1639.48, 1st qu.=1646.44, median=1658.96, mean=1669.49, 3rd qu.=1694.87, max=1726.36 Trial Report (3 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=100}} Results: runtime(ns): min=14867.68, 1st qu.=14914.04, median=14965.08, mean=15050.44, 3rd qu.=15189.02, max=15423.22 After: Trial Report (1 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=1}} Results: runtime(ns): min=139.58, 1st qu.=141.36, median=143.44, mean=146.17, 3rd qu.=148.57, max=164.15 Trial Report (2 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=10}} Results: runtime(ns): min=503.95, 1st qu.=507.65, median=520.78, mean=541.48, 3rd qu.=580.13, max=596.60 Trial Report (3 of 3): Experiment {instrument=runtime, benchmarkMethod=timeAppendSubCharSequence, vm=default, parameters={length=100}} Results: runtime(ns): min=4797.27, 1st qu.=4832.23, median=4861.71, mean=4936.96, 3rd qu.=5049.35, max=5140.17 Bug: 28327317 Change-Id: I81a4b83cf4b3d854dbb635cd49669ba0bec96009
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/src/benchmarks/regression/StringBuilderBenchmark.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/benchmarks/src/benchmarks/regression/StringBuilderBenchmark.java b/benchmarks/src/benchmarks/regression/StringBuilderBenchmark.java
index 07a2305728..ef54432627 100644
--- a/benchmarks/src/benchmarks/regression/StringBuilderBenchmark.java
+++ b/benchmarks/src/benchmarks/regression/StringBuilderBenchmark.java
@@ -63,6 +63,16 @@ public class StringBuilderBenchmark {
}
}
+ public void timeAppendSubCharSequence(int reps) {
+ CharSequence cs = "chars";
+ for (int i = 0; i < reps; ++i) {
+ StringBuilder sb = new StringBuilder();
+ for (int j = 0; j < length; ++j) {
+ sb.append(cs);
+ }
+ }
+ }
+
public void timeAppendDouble(int reps) {
double d = 1.2;
for (int i = 0; i < reps; ++i) {