String: reimplement String.replace(char, char).

Allocates one fewer object by using String.setCharAt instead.

Android M
---------
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=16.71, 1st qu.=17.35, median=17.59, mean=17.50, 3rd qu.=17.75, max=17.91
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_16}}
        runtime(ns): min=52.31, 1st qu.=52.53, median=52.80, mean=53.19, 3rd qu.=53.82, max=55.04
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_64}}
        runtime(ns): min=207.14, 1st qu.=207.76, median=208.74, mean=210.13, 3rd qu.=211.60, max=219.06
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_256}}
        runtime(ns): min=822.15, 1st qu.=824.74, median=827.54, mean=928.81, 3rd qu.=842.17, max=1720.25

      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=17.82, 1st qu.=18.14, median=18.44, mean=18.38, 3rd qu.=18.62, max=18.78
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_16}}
        runtime(ns): min=319.42, 1st qu.=327.69, median=346.29, mean=353.81, 3rd qu.=378.73, max=413.36
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_64}}
        runtime(ns): min=977.09, 1st qu.=1005.63, median=1049.10, mean=1056.24, 3rd qu.=1111.03, max=1150.09
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_256}}
        runtime(ns): min=2735.23, 1st qu.=2819.67, median=2973.69, mean=3432.62, 3rd qu.=4289.10, max=4903.52

      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=17.32, 1st qu.=17.39, median=17.47, mean=17.54, 3rd qu.=17.76, max=17.79
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_16}}
        runtime(ns): min=52.80, 1st qu.=53.03, median=53.59, mean=53.48, 3rd qu.=53.88, max=54.30
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_64}}
        runtime(ns): min=1073.04, 1st qu.=1091.94, median=1136.54, mean=1193.77, 3rd qu.=1301.52, max=1463.46
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_256}}
        runtime(ns): min=5054.41, 1st qu.=5197.68, median=5369.77, mean=5710.48, 3rd qu.=6237.26, max=6811.14

Android N
---------
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=16.49, 1st qu.=16.50, median=16.63, mean=16.77, 3rd qu.=17.03, max=17.31
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_16}}
        runtime(ns): min=58.85, 1st qu.=58.91, median=59.52, mean=59.46, 3rd qu.=59.67, max=60.63
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_64}}
        runtime(ns): min=251.52, 1st qu.=252.46, median=253.68, mean=255.18, 3rd qu.=258.32, max=260.16
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharNonExistent, vm=default, parameters={s=L_256}}
        runtime(ns): min=1025.60, 1st qu.=1027.28, median=1030.04, mean=1031.43, 3rd qu.=1035.53, max=1041.07

      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=17.04, 1st qu.=17.09, median=17.14, mean=17.15, 3rd qu.=17.22, max=17.32
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_16}}
        runtime(ns): min=58.45, 1st qu.=58.83, median=59.30, mean=59.28, 3rd qu.=59.73, max=59.97
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_64}}
        runtime(ns): min=1157.16, 1st qu.=1210.96, median=1256.07, mean=1370.44, 3rd qu.=1510.65, max=1861.24
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceCharRepeated, vm=default, parameters={s=L_256}}
        runtime(ns): min=4679.54, 1st qu.=4743.65, median=4822.16, mean=5298.78, 3rd qu.=5303.08, max=8488.73

      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=EMPTY}}
        runtime(ns): min=16.50, 1st qu.=16.53, median=16.66, mean=16.76, 3rd qu.=16.92, max=17.35
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_16}}
        runtime(ns): min=305.28, 1st qu.=327.30, median=345.80, mean=340.93, 3rd qu.=349.71, max=370.18
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_64}}
        runtime(ns): min=1094.23, 1st qu.=1144.18, median=1169.23, mean=1217.70, 3rd qu.=1239.01, max=1589.17
      Experiment {instrument=runtime, benchmarkMethod=timeReplaceSingleChar, vm=default, parameters={s=L_256}}
        runtime(ns): min=3036.83, 1st qu.=4118.11, median=5428.48, mean=4855.60, 3rd qu.=5501.08, max=5512.46

bug: 28060800
Change-Id: I285d07c679c638ae4ca1e4095490bc5ba4687636
1 file changed