# Benches measuring the performance of several concatenations on Text variants
module chain_concat
+import bench_base
import opts
-fun bench_flatstr(str_size: Int, nb_ccts: Int, loops: Int)
+private fun bench_string(str_size: Int, nb_ccts: Int, loops: Int)
do
- var lft = "a" * str_size
-
- for i in [0..loops] do
- var str: String = lft
- for j in [0..nb_ccts] do
+ var lft = prepare_string(str_size)
+ for i in [0 .. loops[ do
+ var str = ""
+ for j in [0 .. nb_ccts[ do
str += lft
end
end
end
-fun bench_rope(str_size: Int, nb_ccts: Int, loops: Int)
+private fun bench_buffer(str_size: Int, nb_ccts: Int, loops: Int)
do
- var lft = "a" * str_size
-
- for i in [0..loops] do
- var str: String = new RopeString.from(lft)
- for j in [0..nb_ccts] do
- str += lft
- end
- end
-end
-
-fun bench_flatbuf(str_size: Int, nb_ccts: Int, loops: Int)
-do
- var lft = "a" * str_size
-
- for i in [0..loops] do
- var buf = new FlatBuffer.from(lft)
- for j in [0..nb_ccts] do
+ var lft = prepare_string(str_size)
+ for i in [0 .. loops[ do
+ var buf = new Buffer
+ for j in [0 .. nb_ccts[ do
buf.append(lft)
end
- buf.to_s
end
end
var opts = new OptionContext
-var mode = new OptionEnum(["rope", "flatstr", "flatbuf"], "Mode", -1, "-m")
+var mode = new OptionEnum(["string", "buffer"], "Mode", -1, "-m")
var nb_ccts = new OptionInt("Number of concatenations per loop", -1, "--ccts")
var loops = new OptionInt("Number of loops to be done", -1, "--loops")
var strlen = new OptionInt("Length of the base string", -1, "--strlen")
var modval = mode.value
if modval == 0 then
- bench_rope(strlen.value, nb_ccts.value, loops.value)
+ bench_string(strlen.value, nb_ccts.value, loops.value)
else if modval == 1 then
- bench_flatstr(strlen.value, nb_ccts.value, loops.value)
-else if modval == 2 then
- bench_flatbuf(strlen.value, nb_ccts.value, loops.value)
+ bench_buffer(strlen.value, nb_ccts.value, loops.value)
else
opts.usage
exit -1