diff options
author | Yi Kong <yikong@google.com> | 2016-04-25 18:40:25 +0100 |
---|---|---|
committer | Yi Kong <yikong@google.com> | 2016-04-25 22:07:57 +0000 |
commit | a8d952d4388d5173dedc3a80381328fd9d7c5f07 (patch) | |
tree | c5b01d2062ba24d0320b571471c17f9612cb84b8 /benchmarks | |
parent | 1a3915fcd7c5bcf5f2ab5834e9967e5c32b5e183 (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.java | 10 |
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) { |