Go String Concatination Benchmark

A benchmark to compare the performance of different string concatination implementations in Go.

Description:

The classic string concatination is done by using the + operator. This implementation works fine in the most cases, but it has some drawbacks. One of them is that it is not very fast. A solution is to use the strings.Builder or buffer.Bytes type. This benchmark shows which implementation is the fastest, in which use-case. For every run, the final string is increased by the same string. This makes sure, that the final string increases over time, to visualize the performance differences.

Implementations

Green marks the fastest implementation, red marks the slowest

Comparison

This section compares the performance of String Concatination implementations with the functions: read and write

Different Run Count

Different CPU Core Count

Different Run Count Per Function

Some algorithms get slower or faster over time. Especially when they populate the same data struct.

read

write

Different CPU Core Count Per Function

Some algorithms are influenced by the amount of cores a CPU has.

read

write

Append To Slice And Join

This implementation uses the append function to append the strings to a slice. After that, the strings.Join function is used to join the strings together.

Function ns/op ops/sec B/op allocs/op MB/s
read 69113.47 14476 10240.0 1 0.0
write 14.25 82186009 62.3 0 0.0

Comparison

  • Append To Slice And Join read is 4284.94% slower than Buffer read.
  • Append To Slice And Join read is 18925763.04% slower than Simple Append read.
  • Append To Slice And Join read is 11456215.08% slower than String Builder read.
  • Append To Slice And Join write is 77.08% slower than Buffer write.
  • Append To Slice And Join write is 97.47% faster than Simple Append write.
  • Append To Slice And Join write is 280.33% slower than String Builder write.
const (
	readCount = 10_000
)

func BenchmarkAppendToSliceAndJoin_write(b *testing.B) {
	var s []string
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s = append(s, "a")
	}
}

func BenchmarkAppendToSliceAndJoin_read(b *testing.B) {
	var s []string
	for i := 0; i < readCount; i++ {
		s = append(s, "a")
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = strings.Join(s, "")
	}
}

Append To Slice And Join read

ns/op ops/sec B/op allocs/op MB/s
69113.47 14476 10240.0 1 0.0
By Run Count
By CPU Core Count

Append To Slice And Join write

ns/op ops/sec B/op allocs/op MB/s
14.25 82186009 62.3 0 0.0
By Run Count
By CPU Core Count

Buffer

This implementation uses the bytes.Buffer type to append the strings. After that, the buffer.String function is used to get the final string.

Function ns/op ops/sec B/op allocs/op MB/s
read 1576.16 665465 10240.0 1 0.0
write 8.05 138510153 2.2 0 0.0

Comparison

  • Buffer read is 97.72% faster than Append To Slice And Join read.
  • Buffer read is 431510.90% slower than Simple Append read.
  • Buffer read is 261165.25% slower than String Builder read.
  • Buffer write is 43.53% faster than Append To Slice And Join write.
  • Buffer write is 98.57% faster than Simple Append write.
  • Buffer write is 114.78% slower than String Builder write.
const (
	readCount = 10_000
)

func BenchmarkBuffer_write(b *testing.B) {
	var buf bytes.Buffer
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		buf.WriteString("a")
	}
}

func BenchmarkBuffer_read(b *testing.B) {
	var buf bytes.Buffer
	for i := 0; i < readCount; i++ {
		buf.WriteString("a")
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = buf.String()
	}
}

Buffer read

ns/op ops/sec B/op allocs/op MB/s
1576.16 665465 10240.0 1 0.0
By Run Count
By CPU Core Count

Buffer write

ns/op ops/sec B/op allocs/op MB/s
8.05 138510153 2.2 0 0.0
By Run Count
By CPU Core Count

Simple Append

This implementation uses the + operator to append the strings together.

Function ns/op ops/sec B/op allocs/op MB/s
read 0.37 2829582318 0.0 0 0.0
write 562.95 2678866 2935.1 1 0.0

Comparison

  • Simple Append read is 100.00% faster than Append To Slice And Join read.
  • Simple Append read is 99.98% faster than Buffer read.
  • Simple Append read is 39.47% faster than String Builder read.
  • Simple Append write is 3850.64% slower than Append To Slice And Join write.
  • Simple Append write is 6895.64% slower than Buffer write.
  • Simple Append write is 14925.53% slower than String Builder write.
const (
	readCount = 10_000
)

func BenchmarkSimpleAppend_write(b *testing.B) {
	var s string
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s = s + "a"
	}
}

func BenchmarkSimpleAppend_read(b *testing.B) {
	var s string
	for i := 0; i < readCount; i++ {
		s = s + "a"
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = s
	}
}

Simple Append read

ns/op ops/sec B/op allocs/op MB/s
0.37 2829582318 0.0 0 0.0
By Run Count
By CPU Core Count

Simple Append write

ns/op ops/sec B/op allocs/op MB/s
562.95 2678866 2935.1 1 0.0
By Run Count
By CPU Core Count

String Builder

This implementation uses the strings.Builder type to append the strings. After that, the builder.String function is used to get the final string.

Function ns/op ops/sec B/op allocs/op MB/s
read 0.60 1674375479 0.0 0 0.0
write 3.75 301334359 3.2 0 0.0

Comparison

  • String Builder read is 100.00% faster than Append To Slice And Join read.
  • String Builder read is 99.96% faster than Buffer read.
  • String Builder read is 65.20% slower than Simple Append read.
  • String Builder write is 73.71% faster than Append To Slice And Join write.
  • String Builder write is 53.44% faster than Buffer write.
  • String Builder write is 99.33% faster than Simple Append write.
const (
	readCount = 10_000
)

func BenchmarkStringBuilder_write(b *testing.B) {
	var s strings.Builder
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s.WriteString("a")
	}
}

func BenchmarkStringBuilder_read(b *testing.B) {
	var s strings.Builder
	for i := 0; i < readCount; i++ {
		s.WriteString("a")
	}

	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = s.String()
	}
}

String Builder read

ns/op ops/sec B/op allocs/op MB/s
0.60 1674375479 0.0 0 0.0
By Run Count
By CPU Core Count

String Builder write

ns/op ops/sec B/op allocs/op MB/s
3.75 301334359 3.2 0 0.0
By Run Count
By CPU Core Count

Full Benchmark Code

const (
	readCount = 10_000
)

func BenchmarkAppendToSliceAndJoin_write(b *testing.B) {
	var s []string
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s = append(s, "a")
	}
}

func BenchmarkAppendToSliceAndJoin_read(b *testing.B) {
	var s []string
	for i := 0; i < readCount; i++ {
		s = append(s, "a")
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = strings.Join(s, "")
	}
}

func BenchmarkSimpleAppend_write(b *testing.B) {
	var s string
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s = s + "a"
	}
}

func BenchmarkSimpleAppend_read(b *testing.B) {
	var s string
	for i := 0; i < readCount; i++ {
		s = s + "a"
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = s
	}
}

func BenchmarkBuffer_write(b *testing.B) {
	var buf bytes.Buffer
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		buf.WriteString("a")
	}
}

func BenchmarkBuffer_read(b *testing.B) {
	var buf bytes.Buffer
	for i := 0; i < readCount; i++ {
		buf.WriteString("a")
	}
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = buf.String()
	}
}

func BenchmarkStringBuilder_write(b *testing.B) {
	var s strings.Builder
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		s.WriteString("a")
	}
}

func BenchmarkStringBuilder_read(b *testing.B) {
	var s strings.Builder
	for i := 0; i < readCount; i++ {
		s.WriteString("a")
	}

	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_ = s.String()
	}
}

Full Benchmark Output

Implementation Function Runs CPU Core Count ns/op ops/sec B/op allocs/op MB/s
Append To Slice And Join read 1000 8 66957 14934.958256791671 10240 1 0
Append To Slice And Join read 2000 8 69151 14461.106853118537 10241 1 0
Append To Slice And Join read 3000 8 68873 14519.47787957545 10240 1 0
Append To Slice And Join read 4000 8 68365 14627.367805163462 10240 1 0
Append To Slice And Join read 5000 8 68785 14538.05335465581 10240 1 0
Append To Slice And Join read 6000 8 69594 14369.054803575022 10240 1 0
Append To Slice And Join read 7000 8 68923 14508.944764447282 10240 1 0
Append To Slice And Join read 8000 8 69175 14456.089627755691 10240 1 0
Append To Slice And Join read 9000 8 70584 14167.516717669727 10240 1 0
Append To Slice And Join read 10000 8 68387 14622.662201880474 10240 1 0
Append To Slice And Join read 1000 1 69955 14294.903866771496 10240 1 0
Append To Slice And Join read 2000 1 65501 15266.942489427642 10240 1 0
Append To Slice And Join read 3000 1 70954 14093.63813174733 10240 1 0
Append To Slice And Join read 4000 1 66441 15050.947457142427 10240 1 0
Append To Slice And Join read 5000 1 66792 14971.852916516948 10240 1 0
Append To Slice And Join read 6000 1 67695 14772.139744441982 10240 1 0
Append To Slice And Join read 7000 1 66773 14976.113099606127 10240 1 0
Append To Slice And Join read 8000 1 67453 14825.137503150341 10240 1 0
Append To Slice And Join read 9000 1 66187 15108.707147929352 10240 1 0
Append To Slice And Join read 10000 1 66339 15074.089148163222 10240 1 0
Append To Slice And Join read 1000 2 70862 14111.935875363382 10240 1 0
Append To Slice And Join read 2000 2 70287 14227.382019434604 10240 1 0
Append To Slice And Join read 3000 2 71389 14007.76029920576 10240 1 0
Append To Slice And Join read 4000 2 68620 14573.01078402798 10240 1 0
Append To Slice And Join read 5000 2 68366 14627.153848404178 10240 1 0
Append To Slice And Join read 6000 2 70969 14090.659301948739 10240 1 0
Append To Slice And Join read 7000 2 70676 14149.074650517856 10240 1 0
Append To Slice And Join read 8000 2 69396 14410.052452590928 10240 1 0
Append To Slice And Join read 9000 2 70469 14190.637017695724 10240 1 0
Append To Slice And Join read 10000 2 69457 14397.396950631326 10240 1 0
Append To Slice And Join write 1000 2 23.71 42176296.92113032 50 0 0
Append To Slice And Join write 2000 2 9.615 104004160.16640666 60 0 0
Append To Slice And Join write 3000 2 24.77 40371417.03673799 59 0 0
Append To Slice And Join write 4000 2 16.21 61690314.62060456 64 0 0
Append To Slice And Join write 5000 2 19.63 50942435.04839531 51 0 0
Append To Slice And Join write 6000 2 14.41 69396252.60235947 60 0 0
Append To Slice And Join write 7000 2 13.6 73529411.76470588 72 0 0
Append To Slice And Join write 8000 2 18 55555555.55555555 63 0 0
Append To Slice And Join write 9000 2 20.42 48971596.47404505 76 0 0
Append To Slice And Join write 10000 2 16.73 59772863.12014345 68 0 0
Append To Slice And Join write 1000 16 9.29 107642626.48008612 50 0 0
Append To Slice And Join write 2000 16 9.6 104166666.66666667 60 0 0
Append To Slice And Join write 3000 16 7.36 135869565.2173913 59 0 0
Append To Slice And Join write 4000 16 19.14 52246603.9707419 64 0 0
Append To Slice And Join write 5000 16 14.5 68965517.2413793 51 0 0
Append To Slice And Join write 6000 16 4.492 222617987.5333927 60 0 0
Append To Slice And Join write 7000 16 22.45 44543429.844097994 72 0 0
Append To Slice And Join write 8000 16 21.75 45977011.494252875 63 0 0
Append To Slice And Join write 9000 16 8.922 112082492.71463796 76 0 0
Append To Slice And Join write 10000 16 9.572 104471374.84329295 68 0 0
Append To Slice And Join write 1000 32 18.85 53050397.877984084 50 0 0
Append To Slice And Join write 2000 32 8.37 119474313.02270013 60 0 0
Append To Slice And Join write 3000 32 13.42 74515648.28614008 59 0 0
Append To Slice And Join write 4000 32 22.45 44543429.844097994 64 0 0
Append To Slice And Join write 5000 32 13.19 75815011.3722517 51 0 0
Append To Slice And Join write 6000 32 5.697 175530981.218185 60 0 0
Append To Slice And Join write 7000 32 19.43 51466803.9114771 72 0 0
Append To Slice And Join write 8000 32 11.28 88652482.26950355 63 0 0
Append To Slice And Join write 9000 32 14.67 68166325.83503748 76 0 0
Append To Slice And Join write 10000 32 21.45 46620046.62004662 68 0 0
Append To Slice And Join write 1000 1 8.15 122699386.50306748 50 0 0
Append To Slice And Join write 2000 1 12.83 77942322.6812159 60 0 0
Append To Slice And Join write 3000 1 14.15 70671378.0918728 59 0 0
Append To Slice And Join write 4000 1 20.87 47915668.42357451 64 0 0
Append To Slice And Join write 5000 1 9.748 102585145.67090686 51 0 0
Append To Slice And Join write 6000 1 12.53 79808459.69672786 60 0 0
Append To Slice And Join write 7000 1 14.52 68870523.41597797 72 0 0
Append To Slice And Join write 8000 1 9.922 100786131.82826042 63 0 0
Append To Slice And Join write 9000 1 12.09 82712985.9387924 76 0 0
Append To Slice And Join write 10000 1 9.963 100371374.08411121 68 0 0
Append To Slice And Join write 1000 4 13.18 75872534.14264037 50 0 0
Append To Slice And Join write 2000 4 18.76 53304904.0511727 60 0 0
Append To Slice And Join write 3000 4 24.57 40700040.7000407 59 0 0
Append To Slice And Join write 4000 4 6.712 148986889.15375447 64 0 0
Append To Slice And Join write 5000 4 17.25 57971014.492753625 51 0 0
Append To Slice And Join write 6000 4 9.778 102270402.9453876 60 0 0
Append To Slice And Join write 7000 4 10.97 91157702.82588878 72 0 0
Append To Slice And Join write 8000 4 11.43 87489063.86701663 63 0 0
Append To Slice And Join write 9000 4 18.62 53705692.80343716 76 0 0
Append To Slice And Join write 10000 4 24.4 40983606.557377055 68 0 0
Append To Slice And Join read 1000 4 66902 14947.236256016262 10240 1 0
Append To Slice And Join read 2000 4 67154 14891.145724752063 10240 1 0
Append To Slice And Join read 3000 4 68098 14684.719081323974 10240 1 0
Append To Slice And Join read 4000 4 68886 14516.737798681881 10240 1 0
Append To Slice And Join read 5000 4 72003 13888.310209296835 10240 1 0
Append To Slice And Join read 6000 4 68578 14581.935897809793 10240 1 0
Append To Slice And Join read 7000 4 71286 14027.999887776 10240 1 0
Append To Slice And Join read 8000 4 70753 14133.676310545135 10240 1 0
Append To Slice And Join read 9000 4 71152 14054.418709242185 10240 1 0
Append To Slice And Join read 10000 4 69821 14322.33855143868 10240 1 0
Append To Slice And Join write 1000 8 11.65 85836909.87124464 50 0 0
Append To Slice And Join write 2000 8 20.29 49285362.24741252 60 0 0
Append To Slice And Join write 3000 8 13.37 74794315.63201196 59 0 0
Append To Slice And Join write 4000 8 10.1 99009900.99009901 64 0 0
Append To Slice And Join write 5000 8 8.164 122488975.99216071 51 0 0
Append To Slice And Join write 6000 8 8.902 112334306.89732645 60 0 0
Append To Slice And Join write 7000 8 21.79 45892611.28958238 72 0 0
Append To Slice And Join write 8000 8 8.602 116252034.41060218 63 0 0
Append To Slice And Join write 9000 8 10.15 98522167.48768473 76 0 0
Append To Slice And Join write 10000 8 8.539 117109731.81871414 68 0 0
Append To Slice And Join read 1000 16 67834 14741.869858772887 10242 1 0
Append To Slice And Join read 2000 16 70023 14281.021949930737 10240 1 0
Append To Slice And Join read 3000 16 70559 14172.53645885004 10240 1 0
Append To Slice And Join read 4000 16 70786 14127.087277145198 10240 1 0
Append To Slice And Join read 5000 16 69434 14402.166085779301 10240 1 0
Append To Slice And Join read 6000 16 68657 14565.157230872308 10240 1 0
Append To Slice And Join read 7000 16 67798 14749.69763119856 10240 1 0
Append To Slice And Join read 8000 16 70109 14263.503972385857 10240 1 0
Append To Slice And Join read 9000 16 69354 14418.779017792773 10240 1 0
Append To Slice And Join read 10000 16 68933 14506.839975048235 10240 1 0
Append To Slice And Join read 1000 32 68479 14603.016983308751 10240 1 0
Append To Slice And Join read 2000 32 68297 14641.931563611872 10240 1 0
Append To Slice And Join read 3000 32 69222 14446.27430585652 10240 1 0
Append To Slice And Join read 4000 32 67890 14729.709824716452 10240 1 0
Append To Slice And Join read 5000 32 68877 14518.63466759586 10240 1 0
Append To Slice And Join read 6000 32 69775 14331.780723754926 10240 1 0
Append To Slice And Join read 7000 32 69401 14409.01427933315 10240 1 0
Append To Slice And Join read 8000 32 71912 13905.884970519524 10240 1 0
Append To Slice And Join read 9000 32 70075 14270.424545130218 10240 1 0
Append To Slice And Join read 10000 32 71385 14008.545212579673 10240 1 0
Buffer write 1000 4 13.48 74183976.26112759 1 0 0
Buffer write 2000 4 17.72 56433408.57787811 2 0 0
Buffer write 3000 4 7.68 130208333.33333334 2 0 0
Buffer write 4000 4 9.492 105351875.26337968 2 0 0
Buffer write 5000 4 6.336 157828282.82828283 3 0 0
Buffer write 6000 4 7.6 131578947.36842106 2 0 0
Buffer write 7000 4 6.357 157306905.77316344 2 0 0
Buffer write 8000 4 5.372 186150409.53090099 2 0 0
Buffer write 9000 4 6.761 147907114.33219936 3 0 0
Buffer write 10000 4 5.277 189501610.76369148 3 0 0
Buffer write 1000 16 13.43 74460163.81236039 1 0 0
Buffer write 2000 16 10.96 91240875.91240875 2 0 0
Buffer write 3000 16 18.72 53418803.41880342 2 0 0
Buffer write 4000 16 7.59 131752305.66534914 2 0 0
Buffer write 5000 16 7.506 133226751.9317879 3 0 0
Buffer write 6000 16 6.006 166500166.5001665 2 0 0
Buffer write 7000 16 5.861 170619348.23408976 2 0 0
Buffer write 8000 16 5.541 180472838.8377549 2 0 0
Buffer write 9000 16 7.181 139256370.9789723 3 0 0
Buffer write 10000 16 5.645 177147918.5119575 3 0 0
Buffer write 1000 8 13.29 75244544.77050415 1 0 0
Buffer write 2000 8 10.34 96711798.83945842 2 0 0
Buffer write 3000 8 7.537 132678784.66233249 2 0 0
Buffer write 4000 8 6.765 147819660.01478198 2 0 0
Buffer write 5000 8 7.096 140924464.48703495 3 0 0
Buffer write 6000 8 6.726 148676776.6874814 2 0 0
Buffer write 7000 8 6.076 164581961.81698486 2 0 0
Buffer write 8000 8 5.352 186846038.86397606 2 0 0
Buffer write 9000 8 7.296 137061403.50877193 3 0 0
Buffer write 10000 8 6.051 165261940.17517766 3 0 0
Buffer read 1000 2 1550 645161.2903225806 10240 1 0
Buffer read 2000 2 1725 579710.1449275363 10240 1 0
Buffer read 3000 2 1647 607164.541590771 10240 1 0
Buffer read 4000 2 1562 640204.8655569783 10240 1 0
Buffer read 5000 2 1539 649772.579597141 10240 1 0
Buffer read 6000 2 1588 629722.9219143577 10240 1 0
Buffer read 7000 2 1323 755857.8987150416 10240 1 0
Buffer read 8000 2 2193 455996.35202918376 10240 1 0
Buffer read 9000 2 2125 470588.23529411765 10240 1 0
Buffer read 10000 2 1529 654022.2367560497 10240 1 0
Buffer read 1000 8 1604 623441.3965087282 10240 1 0
Buffer read 2000 8 1750 571428.5714285715 10240 1 0
Buffer read 3000 8 1549 645577.7921239509 10240 1 0
Buffer read 4000 8 2096 477099.2366412214 10240 1 0
Buffer read 5000 8 1868 535331.9057815846 10240 1 0
Buffer read 6000 8 1518 658761.5283267457 10240 1 0
Buffer read 7000 8 1763 567214.9744753261 10240 1 0
Buffer read 8000 8 1795 557103.0640668523 10240 1 0
Buffer read 9000 8 2196 455373.4061930783 10240 1 0
Buffer read 10000 8 1650 606060.6060606061 10240 1 0
Buffer read 1000 32 1389 719942.4046076314 10240 1 0
Buffer read 2000 32 1627 614628.1499692686 10240 1 0
Buffer read 3000 32 1500 666666.6666666666 10240 1 0
Buffer read 4000 32 1720 581395.3488372093 10240 1 0
Buffer read 5000 32 1488 672043.0107526882 10240 1 0
Buffer read 6000 32 1538 650195.0585175552 10240 1 0
Buffer read 7000 32 1465 682593.8566552901 10240 1 0
Buffer read 8000 32 1670 598802.3952095809 10240 1 0
Buffer read 9000 32 1871 534473.5435595938 10240 1 0
Buffer read 10000 32 1579 633312.2229259025 10240 1 0
Buffer read 1000 1 1484 673854.4474393531 10240 1 0
Buffer read 2000 1 1231 812347.6848090983 10240 1 0
Buffer read 3000 1 1094 914076.7824497258 10240 1 0
Buffer read 4000 1 966.1 1035089.5352447986 10240 1 0
Buffer read 5000 1 974.4 1026272.5779967159 10240 1 0
Buffer read 6000 1 1026 974658.8693957115 10240 1 0
Buffer read 7000 1 941.6 1062022.0900594732 10240 1 0
Buffer read 8000 1 906.9 1102657.4043444702 10240 1 0
Buffer read 9000 1 890.5 1122964.6266142617 10240 1 0
Buffer read 10000 1 958.9 1042861.6122640526 10240 1 0
Buffer write 1000 2 13.05 76628352.49042146 1 0 0
Buffer write 2000 2 9.375 106666666.66666667 2 0 0
Buffer write 3000 2 8.553 116918040.45364198 2 0 0
Buffer write 4000 2 7.037 142106011.08426887 2 0 0
Buffer write 5000 2 6.228 160565189.46692356 3 0 0
Buffer write 6000 2 5.913 169118890.5800778 2 0 0
Buffer write 7000 2 5.64 177304964.5390071 2 0 0
Buffer write 8000 2 5.525 180995475.11312217 2 0 0
Buffer write 9000 2 7.153 139801481.8957081 3 0 0
Buffer write 10000 2 6.616 151148730.35066506 3 0 0
Buffer write 1000 32 19.23 52002080.08320333 1 0 0
Buffer write 2000 32 12.29 81366965.01220505 2 0 0
Buffer write 3000 32 7.473 133815067.57660913 2 0 0
Buffer write 4000 32 6.68 149700598.80239522 2 0 0
Buffer write 5000 32 8.264 121006776.37947726 3 0 0
Buffer write 6000 32 5.698 175500175.50017548 2 0 0
Buffer write 7000 32 5.561 179823772.7027513 2 0 0
Buffer write 8000 32 5.518 181225081.5512867 2 0 0
Buffer write 9000 32 6.809 146864444.118079 3 0 0
Buffer write 10000 32 5.7 175438596.49122807 3 0 0
Buffer read 1000 16 1662 601684.7172081829 10240 1 0
Buffer read 2000 16 1853 539665.4074473826 10240 1 0
Buffer read 3000 16 1604 623441.3965087282 10240 1 0
Buffer read 4000 16 1580 632911.3924050633 10240 1 0
Buffer read 5000 16 1507 663570.0066357001 10240 1 0
Buffer read 6000 16 1485 673400.6734006734 10240 1 0
Buffer read 7000 16 1438 695410.2920723227 10240 1 0
Buffer read 8000 16 1584 631313.1313131313 10240 1 0
Buffer read 9000 16 1859 537923.6148466917 10240 1 0
Buffer read 10000 16 1414 707213.5785007072 10240 1 0
Buffer write 1000 1 13.33 75018754.68867217 1 0 0
Buffer write 2000 1 8.865 112803158.48843767 2 0 0
Buffer write 3000 1 7.48 133689839.5721925 2 0 0
Buffer write 4000 1 6.665 150037509.37734434 2 0 0
Buffer write 5000 1 6.256 159846547.314578 3 0 0
Buffer write 6000 1 5.788 172771250.86385626 2 0 0
Buffer write 7000 1 6.044 165453342.1575116 2 0 0
Buffer write 8000 1 6.394 156396621.8329684 2 0 0
Buffer write 9000 1 6.222 160720025.7152041 3 0 0
Buffer write 10000 1 6.43 155520995.33437014 3 0 0
Buffer read 1000 4 1642 609013.3982947625 10240 1 0
Buffer read 2000 4 1902 525762.3554153523 10240 1 0
Buffer read 3000 4 1588 629722.9219143577 10240 1 0
Buffer read 4000 4 1816 550660.7929515418 10240 1 0
Buffer read 5000 4 1669 599161.1743559018 10240 1 0
Buffer read 6000 4 1756 569476.0820045559 10240 1 0
Buffer read 7000 4 1544 647668.3937823834 10240 1 0
Buffer read 8000 4 1799 555864.3690939411 10240 1 0
Buffer read 9000 4 2278 438981.5627743635 10240 1 0
Buffer read 10000 4 1699 588581.5185403179 10240 1 0
Simple Append write 1000 4 112.2 8912655.971479502 530 0 0
Simple Append write 2000 4 144.1 6939625.260235948 1063 0 0
Simple Append write 3000 4 297.5 3361344.537815126 1602 0 0
Simple Append write 4000 4 556.8 1795977.011494253 2137 1 0
Simple Append write 5000 4 664.7 1504438.0923724987 2682 0 0
Simple Append write 6000 4 868.6 1151277.9184895232 3210 1 0
Simple Append write 7000 4 812.3 1231072.2639418934 3714 0 0
Simple Append write 8000 4 869.7 1149821.777624468 4273 1 0
Simple Append write 9000 4 938.2 1065870.8164570453 4824 1 0
Simple Append write 10000 4 937.6 1066552.9010238908 5316 1 0
Simple Append write 1000 32 188.7 5299417.064122947 530 0 0
Simple Append write 2000 32 131.5 7604562.737642585 1063 0 0
Simple Append write 3000 32 256.6 3897116.1340607945 1602 1 0
Simple Append write 4000 32 438.7 2279462.046956918 2137 0 0
Simple Append write 5000 32 556.1 1798237.7270275129 2682 1 0
Simple Append write 6000 32 697.8 1433075.3797649757 3210 1 0
Simple Append write 7000 32 755.2 1324152.5423728812 3714 1 0
Simple Append write 8000 32 738 1355013.5501355014 4273 1 0
Simple Append write 9000 32 911.6 1096972.3562966213 4824 1 0
Simple Append write 10000 32 918.4 1088850.1742160278 5316 1 0
Simple Append read 1000 4 0.57 1754385964.9122808 0 0 0
Simple Append read 2000 4 0.415 2409638554.2168674 0 0 0
Simple Append read 3000 4 0.3733 2678810608.090008 0 0 0
Simple Append read 4000 4 0.365 2739726027.39726 0 0 0
Simple Append read 5000 4 0.34 2941176470.588235 0 0 0
Simple Append read 6000 4 0.335 2985074626.8656716 0 0 0
Simple Append read 7000 4 0.3457 2892681515.7651143 0 0 0
Simple Append read 8000 4 0.315 3174603174.6031747 0 0 0
Simple Append read 9000 4 0.3056 3272251308.9005237 0 0 0
Simple Append read 10000 4 0.297 3367003367.003367 0 0 0
Simple Append read 1000 2 0.65 1538461538.4615383 0 0 0
Simple Append read 2000 2 0.415 2409638554.2168674 0 0 0
Simple Append read 3000 2 0.3867 2585983966.8994055 0 0 0
Simple Append read 4000 2 0.3325 3007518796.992481 0 0 0
Simple Append read 5000 2 0.326 3067484662.576687 0 0 0
Simple Append read 6000 2 0.32 3125000000 0 0 0
Simple Append read 7000 2 0.4057 2464875523.786049 0 0 0
Simple Append read 8000 2 0.3187 3137747097.583935 0 0 0
Simple Append read 9000 2 0.3011 3321155762.205248 0 0 0
Simple Append read 10000 2 0.296 3378378378.3783784 0 0 0
Simple Append read 1000 32 0.449 2227171492.2049 0 0 0
Simple Append read 2000 32 0.425 2352941176.470588 0 0 0
Simple Append read 3000 32 0.3967 2520796571.7166624 0 0 0
Simple Append read 4000 32 0.3625 2758620689.6551723 0 0 0
Simple Append read 5000 32 0.462 2164502164.5021644 0 0 0
Simple Append read 6000 32 0.355 2816901408.4507046 0 0 0
Simple Append read 7000 32 0.3243 3083564600.6783843 0 0 0
Simple Append read 8000 32 0.32 3125000000 0 0 0
Simple Append read 9000 32 0.3011 3321155762.205248 0 0 0
Simple Append read 10000 32 0.308 3246753246.753247 0 0 0
Simple Append write 1000 8 230.3 4342162.396873643 530 0 0
Simple Append write 2000 8 166.4 6009615.384615384 1063 0 0
Simple Append write 3000 8 289.6 3453038.6740331487 1602 1 0
Simple Append write 4000 8 473.3 2112824.8468201985 2137 1 0
Simple Append write 5000 8 656.7 1522765.3418608191 2682 0 0
Simple Append write 6000 8 709.3 1409840.6880022557 3210 1 0
Simple Append write 7000 8 708.5 1411432.6040931547 3714 1 0
Simple Append write 8000 8 804.4 1243162.6056688216 4273 1 0
Simple Append write 9000 8 930.6 1074575.542660649 4824 1 0
Simple Append write 10000 8 1086 920810.3130755065 5316 1 0
Simple Append write 1000 16 126.8 7886435.331230284 530 0 0
Simple Append write 2000 16 163.4 6119951.040391677 1063 0 0
Simple Append write 3000 16 316.5 3159557.6619273303 1602 1 0
Simple Append write 4000 16 404.3 2473410.833539451 2137 1 0
Simple Append write 5000 16 592.5 1687763.7130801687 2682 1 0
Simple Append write 6000 16 698.3 1432049.26249463 3210 1 0
Simple Append write 7000 16 619.9 1613163.413453783 3714 1 0
Simple Append write 8000 16 731.1 1367801.942278758 4273 1 0
Simple Append write 9000 16 846.8 1180916.3911195088 4824 1 0
Simple Append write 10000 16 910.4 1098418.2776801407 5316 1 0
Simple Append read 1000 1 0.41 2439024390.2439027 0 0 0
Simple Append read 2000 1 0.455 2197802197.802198 0 0 0
Simple Append read 3000 1 0.35 2857142857.1428576 0 0 0
Simple Append read 4000 1 0.355 2816901408.4507046 0 0 0
Simple Append read 5000 1 0.344 2906976744.1860466 0 0 0
Simple Append read 6000 1 0.35 2857142857.1428576 0 0 0
Simple Append read 7000 1 0.31 3225806451.612903 0 0 0
Simple Append read 8000 1 0.2938 3403675970.0476513 0 0 0
Simple Append read 9000 1 0.2856 3501400560.2240896 0 0 0
Simple Append read 10000 1 0.306 3267973856.2091503 0 0 0
Simple Append write 1000 1 133.9 7468259.8954443615 530 0 0
Simple Append write 2000 1 281 3558718.8612099644 1063 0 0
Simple Append write 3000 1 328.4 3045066.9914738126 1602 0 0
Simple Append write 4000 1 495.5 2018163.4712411705 2137 0 0
Simple Append write 5000 1 474.3 2108370.229812355 2682 0 0
Simple Append write 6000 1 491.7 2033760.423022168 3210 0 0
Simple Append write 7000 1 530.4 1885369.5324283561 3714 0 0
Simple Append write 8000 1 470.2 2126754.572522331 4273 0 0
Simple Append write 9000 1 660.8 1513317.191283293 4824 0 0
Simple Append write 10000 1 744 1344086.0215053763 5316 0 0
Simple Append read 1000 8 0.59 1694915254.2372882 0 0 0
Simple Append read 2000 8 0.405 2469135802.4691358 0 0 0
Simple Append read 3000 8 0.39 2564102564.102564 0 0 0
Simple Append read 4000 8 0.3475 2877697841.726619 0 0 0
Simple Append read 5000 8 0.352 2840909090.909091 0 0 0
Simple Append read 6000 8 0.3833 2608922515.0013046 0 0 0
Simple Append read 7000 8 0.3171 3153579312.51971 0 0 0
Simple Append read 8000 8 0.3262 3065603923.973023 0 0 0
Simple Append read 9000 8 0.3133 3191828917.9699965 0 0 0
Simple Append read 10000 8 0.305 3278688524.590164 0 0 0
Simple Append write 1000 2 119.8 8347245.409015025 530 0 0
Simple Append write 2000 2 170.7 5858230.814294084 1063 0 0
Simple Append write 3000 2 382.3 2615746.7957101753 1602 0 0
Simple Append write 4000 2 535.8 1866368.0477790223 2137 0 0
Simple Append write 5000 2 569.8 1755001.7550017552 2682 0 0
Simple Append write 6000 2 618.7 1616292.2256343947 3210 1 0
Simple Append write 7000 2 645.5 1549186.6769945777 3714 1 0
Simple Append write 8000 2 901.6 1109139.3078970718 4273 1 0
Simple Append write 9000 2 969.3 1031672.3408645415 4824 1 0
Simple Append write 10000 2 994 1006036.217303823 5316 1 0
Simple Append read 1000 16 0.54 1851851851.8518517 0 0 0
Simple Append read 2000 16 0.45 2222222222.2222223 0 0 0
Simple Append read 3000 16 0.38 2631578947.368421 0 0 0
Simple Append read 4000 16 0.34 2941176470.588235 0 0 0
Simple Append read 5000 16 0.348 2873563218.390805 0 0 0
Simple Append read 6000 16 0.31 3225806451.612903 0 0 0
Simple Append read 7000 16 0.3143 3181673560.2927136 0 0 0
Simple Append read 8000 16 0.3125 3200000000 0 0 0
Simple Append read 9000 16 0.3133 3191828917.9699965 0 0 0
Simple Append read 10000 16 0.297 3367003367.003367 0 0 0
String Builder read 1000 32 0.7 1428571428.5714288 0 0 0
String Builder read 2000 32 0.6495 1539645881.4472673 0 0 0
String Builder read 3000 32 0.6133 1630523398.0107615 0 0 0
String Builder read 4000 32 0.585 1709401709.4017096 0 0 0
String Builder read 5000 32 0.786 1272264631.043257 0 0 0
String Builder read 6000 32 0.5683 1759633996.1288052 0 0 0
String Builder read 7000 32 0.5671 1763357432.551578 0 0 0
String Builder read 8000 32 0.5637 1773993258.8256166 0 0 0
String Builder read 9000 32 0.5578 1792757260.6669059 0 0 0
String Builder read 10000 32 0.558 1792114695.3405015 0 0 0
String Builder write 1000 2 7.67 130378096.4797914 3 0 0
String Builder write 2000 2 3.755 266311584.5539281 2 0 0
String Builder write 3000 2 4.163 240211386.0196973 2 0 0
String Builder write 4000 2 2.353 424989375.2656183 3 0 0
String Builder write 5000 2 2.312 432525951.55709344 3 0 0
String Builder write 6000 2 3.287 304228780.04259205 4 0 0
String Builder write 7000 2 4.63 215982721.3822894 4 0 0
String Builder write 8000 2 4.256 234962406.0150376 4 0 0
String Builder write 9000 2 3.966 252143217.34745336 3 0 0
String Builder write 10000 2 2.665 375234521.575985 4 0 0
String Builder write 1000 4 5.39 185528756.9573284 3 0 0
String Builder write 2000 4 6.635 150715900.52750567 2 0 0
String Builder write 3000 4 3.857 259268861.80969664 2 0 0
String Builder write 4000 4 3.75 266666666.66666666 3 0 0
String Builder write 5000 4 2.42 413223140.4958678 3 0 0
String Builder write 6000 4 2.38 420168067.2268908 4 0 0
String Builder write 7000 4 3.513 284656988.3290635 4 0 0
String Builder write 8000 4 2.356 424448217.3174873 4 0 0
String Builder write 9000 4 3.531 283205890.6825262 3 0 0
String Builder write 10000 4 3.078 324886289.7985705 4 0 0
String Builder read 1000 4 0.71 1408450704.2253523 0 0 0
String Builder read 2000 4 0.625 1600000000 0 0 0
String Builder read 3000 4 0.5967 1675884028.8252053 0 0 0
String Builder read 4000 4 0.585 1709401709.4017096 0 0 0
String Builder read 5000 4 0.58 1724137931.034483 0 0 0
String Builder read 6000 4 0.5717 1749169144.6562884 0 0 0
String Builder read 7000 4 0.5829 1715560130.38257 0 0 0
String Builder read 8000 4 0.5625 1777777777.7777777 0 0 0
String Builder read 9000 4 0.5611 1782213509.1783993 0 0 0
String Builder read 10000 4 0.557 1795332136.4452422 0 0 0
String Builder write 1000 8 4.73 211416490.4862579 3 0 0
String Builder write 2000 8 6.575 152091254.7528517 2 0 0
String Builder write 3000 8 4.437 225377507.32476896 2 0 0
String Builder write 4000 8 2.77 361010830.32490975 3 0 0
String Builder write 5000 8 2.442 409500409.5004095 3 0 0
String Builder write 6000 8 2.187 457247370.82761776 4 0 0
String Builder write 7000 8 3.283 304599451.7209869 4 0 0
String Builder write 8000 8 4.612 216825672.1595837 4 0 0
String Builder write 9000 8 3.728 268240343.34763947 3 0 0
String Builder write 10000 8 3.752 266524520.25586355 4 0 0
String Builder write 1000 32 5.28 189393939.39393938 3 0 0
String Builder write 2000 32 8.445 118413262.28537595 2 0 0
String Builder write 3000 32 2.853 350508236.94356817 2 0 0
String Builder write 4000 32 3.285 304414003.04414004 3 0 0
String Builder write 5000 32 3.558 281056773.4682406 3 0 0
String Builder write 6000 32 2.943 339789330.61501867 4 0 0
String Builder write 7000 32 3.811 262398320.65074784 4 0 0
String Builder write 8000 32 2.208 452898550.7246376 4 0 0
String Builder write 9000 32 4.61 216919739.69631234 3 0 0
String Builder write 10000 32 2.202 454132606.7211626 4 0 0
String Builder write 1000 1 4.72 211864406.77966103 3 0 0
String Builder write 2000 1 3.015 331674958.54063016 2 0 0
String Builder write 3000 1 2.963 337495781.3027337 2 0 0
String Builder write 4000 1 2.522 396510705.78905636 3 0 0
String Builder write 5000 1 2.172 460405156.53775316 3 0 0
String Builder write 6000 1 2.32 431034482.75862074 4 0 0
String Builder write 7000 1 3.06 326797385.62091506 4 0 0
String Builder write 8000 1 4.214 237304224.01518744 4 0 0
String Builder write 9000 1 2.879 347342827.37061477 3 0 0
String Builder write 10000 1 2.431 411353352.5298231 4 0 0
String Builder read 1000 16 0.69 1449275362.3188407 0 0 0
String Builder read 2000 16 0.655 1526717557.2519083 0 0 0
String Builder read 3000 16 0.6 1666666666.6666667 0 0 0
String Builder read 4000 16 0.585 1709401709.4017096 0 0 0
String Builder read 5000 16 0.576 1736111111.1111112 0 0 0
String Builder read 6000 16 0.5683 1759633996.1288052 0 0 0
String Builder read 7000 16 0.5699 1754693805.9308653 0 0 0
String Builder read 8000 16 0.565 1769911504.424779 0 0 0
String Builder read 9000 16 0.56 1785714285.7142856 0 0 0
String Builder read 10000 16 0.561 1782531194.2959 0 0 0
String Builder write 1000 16 8.35 119760479.04191618 3 0 0
String Builder write 2000 16 6.934 144216902.2209403 2 0 0
String Builder write 3000 16 3.347 298775022.4081267 2 0 0
String Builder write 4000 16 4.6 217391304.3478261 3 0 0
String Builder write 5000 16 2.582 387296669.2486445 3 0 0
String Builder write 6000 16 3.09 323624595.4692557 4 0 0
String Builder write 7000 16 2.734 365764447.69568396 4 0 0
String Builder write 8000 16 2.495 400801603.2064128 4 0 0
String Builder write 9000 16 3.257 307031010.13202333 3 0 0
String Builder write 10000 16 3.435 291120815.13828236 4 0 0
String Builder read 1000 1 0.64 1562500000 0 0 0
String Builder read 2000 1 0.595 1680672268.9075632 0 0 0
String Builder read 3000 1 0.8467 1181055863.9423645 0 0 0
String Builder read 4000 1 0.5775 1731601731.6017315 0 0 0
String Builder read 5000 1 0.568 1760563380.2816904 0 0 0
String Builder read 6000 1 0.56 1785714285.7142856 0 0 0
String Builder read 7000 1 0.5614 1781261132.8820806 0 0 0
String Builder read 8000 1 0.5587 1789869339.5382137 0 0 0
String Builder read 9000 1 0.5522 1810938065.9181454 0 0 0
String Builder read 10000 1 0.55 1818181818.181818 0 0 0
String Builder read 1000 2 0.7 1428571428.5714288 0 0 0
String Builder read 2000 2 0.655 1526717557.2519083 0 0 0
String Builder read 3000 2 0.6 1666666666.6666667 0 0 0
String Builder read 4000 2 0.585 1709401709.4017096 0 0 0
String Builder read 5000 2 0.576 1736111111.1111112 0 0 0
String Builder read 6000 2 0.5683 1759633996.1288052 0 0 0
String Builder read 7000 2 0.8584 1164958061.5097857 0 0 0
String Builder read 8000 2 0.5687 1758396342.5356076 0 0 0
String Builder read 9000 2 0.5611 1782213509.1783993 0 0 0
String Builder read 10000 2 0.558 1792114695.3405015 0 0 0
String Builder read 1000 8 0.7 1428571428.5714288 0 0 0
String Builder read 2000 8 0.63 1587301587.3015873 0 0 0
String Builder read 3000 8 0.61 1639344262.295082 0 0 0
String Builder read 4000 8 0.6025 1659751037.3443983 0 0 0
String Builder read 5000 8 0.578 1730103806.2283738 0 0 0
String Builder read 6000 8 0.5767 1734003814.8083925 0 0 0
String Builder read 7000 8 0.5657 1767721407.10624 0 0 0
String Builder read 8000 8 0.565 1769911504.424779 0 0 0
String Builder read 9000 8 0.56 1785714285.7142856 0 0 0
String Builder read 10000 8 0.558 1792114695.3405015 0 0 0