Merge "identityd: Fix minute display in datepicker."
diff --git a/cmd/servicerunner/main.go b/cmd/servicerunner/main.go
index 0832676..6b7b91b 100644
--- a/cmd/servicerunner/main.go
+++ b/cmd/servicerunner/main.go
@@ -2,6 +2,10 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build wspr
+//
+// We restrict to a special build-tag since it's required by wsprlib.
+
 // Command servicerunner runs several Vanadium services, including the
 // mounttable, proxy and wspr.  It prints a JSON map with their vars to stdout
 // (as a single line), then waits forever.
diff --git a/cmd/servicerunner/servicerunner_test.go b/cmd/servicerunner/servicerunner_test.go
index 2f9569d..14281ea 100644
--- a/cmd/servicerunner/servicerunner_test.go
+++ b/cmd/servicerunner/servicerunner_test.go
@@ -2,6 +2,10 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build wspr
+//
+// We restrict to a special build-tag since it's required by wsprlib.
+
 // Runs the servicerunner binary and checks that it outputs a JSON line to
 // stdout with the expected variables.
 package main
@@ -17,9 +21,15 @@
 	"testing"
 
 	"v.io/x/ref/envvar"
+	"v.io/x/ref/test"
 )
 
-//go:generate v23 test generate
+// We provide our own TestMain, rather than allowing v23 test generate to create
+// one for us, to ensure all files require the "wspr" build tag.
+func TestMain(m *testing.M) {
+	test.Init()
+	os.Exit(m.Run())
+}
 
 func TestServiceRunner(t *testing.T) {
 	envvar.ClearCredentials()
@@ -32,7 +42,7 @@
 
 	bin := path.Join(tmpdir, "servicerunner")
 	fmt.Println("Building", bin)
-	err = exec.Command("v23", "go", "build", "-o", bin, "v.io/x/ref/cmd/servicerunner").Run()
+	err = exec.Command("v23", "go", "build", "-o", bin, "-a", "-tags", "wspr", "v.io/x/ref/cmd/servicerunner").Run()
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/cmd/servicerunner/v23_internal_test.go b/cmd/servicerunner/v23_internal_test.go
deleted file mode 100644
index dcd0029..0000000
--- a/cmd/servicerunner/v23_internal_test.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2015 The Vanadium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file was auto-generated via go generate.
-// DO NOT UPDATE MANUALLY
-package main
-
-import "testing"
-import "os"
-
-import "v.io/x/ref/test"
-
-func TestMain(m *testing.M) {
-	test.Init()
-	os.Exit(m.Run())
-}
diff --git a/cmd/servicerunner/wspr.go b/cmd/servicerunner/wspr.go
index a972136..f8fd122 100644
--- a/cmd/servicerunner/wspr.go
+++ b/cmd/servicerunner/wspr.go
@@ -2,6 +2,11 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build wspr
+//
+// We restrict to a special build-tag in order to enable
+// security.OverrideCaveatValidation, which isn't generally available.
+
 package main
 
 import (
@@ -23,6 +28,7 @@
 const WSPRDCommand = "wsprd"
 
 func init() {
+	wsprlib.OverrideCaveatValidation()
 	modules.RegisterChild(WSPRDCommand, modules.Usage(flag.CommandLine), startWSPR)
 }
 
diff --git a/lib/vdl/codegen/javascript/gen.go b/lib/vdl/codegen/javascript/gen.go
index 787b785..85fc597 100644
--- a/lib/vdl/codegen/javascript/gen.go
+++ b/lib/vdl/codegen/javascript/gen.go
@@ -347,6 +347,19 @@
 	return false
 }
 
+func hasMethodTags(pkg *compile.Package) bool {
+	for _, file := range pkg.Files {
+		for _, iface := range file.Interfaces {
+			for _, method := range iface.Methods {
+				if len(method.Tags) > 0 {
+					return true
+				}
+			}
+		}
+	}
+	return false
+}
+
 func generateSystemImports(data data) string {
 	res := "var vdl = require('"
 	packagePrefix := ""
@@ -369,7 +382,7 @@
 		}
 	}
 
-	if hasConsts(data.Pkg) || hasEnums(data.Pkg) {
+	if hasConsts(data.Pkg) || hasEnums(data.Pkg) || hasMethodTags(data.Pkg) {
 		if data.PathToCoreJS != "" {
 			res += "var canonicalize = require('" + packagePrefix + "/vdl/canonicalize');\n"
 		} else {
@@ -437,7 +450,7 @@
   {{range $iface := $file.Interfaces}}
     {{/* Define the service interface. */}}
 function {{$iface.Name}}(){}
-module.exports.{{$iface.Name}} = {{$iface.Name}}
+module.exports.{{$iface.Name}} = {{$iface.Name}};
 
     {{range $method := $iface.AllMethods}}
       {{/* Add each method to the service prototype. */}}
diff --git a/profiles/internal/rpc/benchmark/README.md b/profiles/internal/rpc/benchmark/README.md
new file mode 100644
index 0000000..6adfead
--- /dev/null
+++ b/profiles/internal/rpc/benchmark/README.md
@@ -0,0 +1,128 @@
+This directory contains code uses to measure the performance of the Vanadium RPC stack.
+
+---
+
+This benchmarks use Go's testing package to run benchmarks. Each benchmark involves
+one server and one client. The server has two very simple methods that echo the data
+received from the client back to the client.
+
+* `client ---- Echo(payload) ----> server`
+* `client <--- return payload ---- server`
+
+There are two versions of the Echo method:
+
+* `Echo(payload []byte) ([]byte], error)`
+* `EchoStream() <[]byte,[]byte> error`
+
+# Microbenchmarks
+## `benchmark_test.go`
+
+The first benchmarks use the non-streaming version of Echo with a varying
+payload size. The second benchmarks use the streaming version with varying
+number of chunks and payload sizes. The third one is for measuring the
+performance with multiple clients hosted in the same process.
+
+This test creates a VC before the benchmark begins. So, the VC creation
+overhead is excluded.
+
+```
+$ v23 go test -bench=. -timeout=1h -cpu=1 -benchtime=5s v.io/x/ref/profiles/internal/rpc/benchmark
+PASS
+Benchmark____1B     1000           8301357 ns/op           0.00 MB/s
+--- Histogram (unit: ms)
+        Count: 1000  Min: 7  Max: 17  Avg: 7.89
+        ------------------------------------------------------------
+        [  7,   8)   505   50.5%   50.5%  #####
+        [  8,   9)   389   38.9%   89.4%  ####
+        [  9,  10)    38    3.8%   93.2%  
+        [ 10,  11)    12    1.2%   94.4%  
+        [ 11,  12)     4    0.4%   94.8%  
+        [ 12,  14)    19    1.9%   96.7%  
+        [ 14,  16)    23    2.3%   99.0%  
+        [ 16,  18)    10    1.0%  100.0%  
+        [ 18,  21)     0    0.0%  100.0%  
+        [ 21,  24)     0    0.0%  100.0%  
+        [ 24, inf)     0    0.0%  100.0%  
+Benchmark___10B     1000           8587341 ns/op           0.00 MB/s
+...
+```
+
+`RESULTS.txt` has the full benchmark results.
+
+## `main/main.go`
+
+main/main.go is a simple command-line tool to run the main benchmarks to measure
+RPC setup time, latency, and throughput.
+
+```
+$ v23 go run main/main.go
+RPC Connection  33.48 ms/rpc
+RPC (echo 1000B)  1.31 ms/rpc (763.05 qps)
+RPC Streaming (echo 1000B)  0.11 ms/rpc
+RPC Streaming Throughput (echo 1MB) 313.91 MB/s
+```
+
+# Client/Server
+## `{benchmark,benchmarkd}/main.go`
+
+benchmarkd/main.go and benchmark/main.go are simple command-line tools to run the
+benchmark server and client as separate processes. Unlike the benchmarks above,
+this test includes the startup cost of name resolution, creating the VC, etc. in
+the first RPC.
+
+```
+$ v23 go run benchmarkd/main.go \
+  -v23.tcp.address=localhost:8888 -v23.permissions.literal='{"Read": {"In": ["..."]}}'
+```
+
+(In a different shell)
+
+```
+$ v23 go run benchmark/main.go \
+  -server=/localhost:8888 -iterations=100 -chunk_count=0 -payload_size=10
+iterations: 100  chunk_count: 0  payload_size: 10
+elapsed time: 1.369034277s
+Histogram (unit: ms)
+Count: 100  Min: 7  Max: 94  Avg: 13.17
+------------------------------------------------------------
+[  7,   8)    1    1.0%    1.0%  
+[  8,   9)    4    4.0%    5.0%  
+[  9,  10)   17   17.0%   22.0%  ##
+[ 10,  12)   24   24.0%   46.0%  ##
+[ 12,  15)   24   24.0%   70.0%  ##
+[ 15,  19)   28   28.0%   98.0%  ###
+[ 19,  24)    1    1.0%   99.0%  
+[ 24,  32)    0    0.0%   99.0%  
+[ 32,  42)    0    0.0%   99.0%  
+[ 42,  56)    0    0.0%   99.0%  
+[ 56,  75)    0    0.0%   99.0%  
+[ 75, 101)    1    1.0%  100.0%  
+[101, 136)    0    0.0%  100.0%  
+[136, 183)    0    0.0%  100.0%  
+[183, 247)    0    0.0%  100.0%  
+[247, 334)    0    0.0%  100.0%  
+[334, inf)    0    0.0%  100.0%  
+```
+
+# Raspberry Pi
+
+On a Raspberry Pi, everything is much slower. The same tests show the following
+results:
+
+```
+$ ./main
+RPC Connection  1765.47 ms/rpc
+RPC (echo 1000B)  78.61 ms/rpc (12.72 qps)
+RPC Streaming (echo 1000B)  23.85 ms/rpc
+RPC Streaming Throughput (echo 1MB) 0.92 MB/s
+```
+
+On a Raspberry Pi 2,
+
+```
+$ ./main
+RPC Connection  847.41 ms/rpc
+RPC (echo 1000B)  16.47 ms/rpc (60.71 qps)
+RPC Streaming (echo 1000B)  3.33 ms/rpc
+RPC Streaming Throughput (echo 1MB) 2.31 MB/s
+```
diff --git a/profiles/internal/rpc/benchmark/README.txt b/profiles/internal/rpc/benchmark/README.txt
deleted file mode 100644
index 27fa43b..0000000
--- a/profiles/internal/rpc/benchmark/README.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-This directory contains code uses to measure the performance of the Vanadium IPC
-stack.
-
-================================================================================
-
-The ipc_test.go file uses GO's testing package to run benchmarks. Each
-benchmark involves one server and one client. The server has two very simple
-methods that echo the data received from the client back to the client.
-
-client ---- Echo(payload) ----> server
-client <--- return payload ---- server
-
-There are two versions of the Echo method:
- - Echo(payload []byte) ([]byte], error)
- - EchoStream() <[]byte,[]byte> error
-
-The first benchmarks use the non-streaming version of Echo with a varying
-payload size. The second benchmarks use the streaming version with varying
-number of chunks and payload sizes. The third one is for measuring the
-performance with multiple clients hosted in the same process.
-
-This test creates a VC before the benchmark begins. So, the VC creation
-overhead is excluded.
-
-$ v23 go test -bench=. -timeout=1h -cpu=1 -benchtime=5s \
-  v.io/x/ref/profiles/internal/ipc/benchmark
-PASS
-Benchmark____1B	    1000	   8301357 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 7  Max: 17  Avg: 7.89
-	------------------------------------------------------------
-	[  7,   8)   505   50.5%   50.5%  #####
-	[  8,   9)   389   38.9%   89.4%  ####
-	[  9,  10)    38    3.8%   93.2%  
-	[ 10,  11)    12    1.2%   94.4%  
-	[ 11,  12)     4    0.4%   94.8%  
-	[ 12,  14)    19    1.9%   96.7%  
-	[ 14,  16)    23    2.3%   99.0%  
-	[ 16,  18)    10    1.0%  100.0%  
-	[ 18,  21)     0    0.0%  100.0%  
-	[ 21,  24)     0    0.0%  100.0%  
-	[ 24, inf)     0    0.0%  100.0%  
-Benchmark___10B	    1000	   8587341 ns/op	   0.00 MB/s
-...
-
-RESULTS.txt has the full benchmark results.
-
-================================================================================
-
-benchmarkd/main.go and benchmark/main.go are simple command-line tools to run the
-benchmark server and client as separate processes. Unlike the benchmarks above,
-this test includes the startup cost of name resolution, creating the VC, etc. in
-the first RPC.
-
-$ v23 go run benchmarkd/main.go \
-  -v23.tcp.address=localhost:8888 -v23.permissions.literal='{"Read": {"In": ["..."]}}'
-
-(In a different shell)
-$ v23 go run benchmark/main.go \
-  -server=/localhost:8888 -iterations=100 -chunk_count=0 -payload_size=10
-iterations: 100  chunk_count: 0  payload_size: 10
-elapsed time: 1.369034277s
-Histogram (unit: ms)
-Count: 100  Min: 7  Max: 94  Avg: 13.17
-------------------------------------------------------------
-[  7,   8)    1    1.0%    1.0%  
-[  8,   9)    4    4.0%    5.0%  
-[  9,  10)   17   17.0%   22.0%  ##
-[ 10,  12)   24   24.0%   46.0%  ##
-[ 12,  15)   24   24.0%   70.0%  ##
-[ 15,  19)   28   28.0%   98.0%  ###
-[ 19,  24)    1    1.0%   99.0%  
-[ 24,  32)    0    0.0%   99.0%  
-[ 32,  42)    0    0.0%   99.0%  
-[ 42,  56)    0    0.0%   99.0%  
-[ 56,  75)    0    0.0%   99.0%  
-[ 75, 101)    1    1.0%  100.0%  
-[101, 136)    0    0.0%  100.0%  
-[136, 183)    0    0.0%  100.0%  
-[183, 247)    0    0.0%  100.0%  
-[247, 334)    0    0.0%  100.0%  
-[334, inf)    0    0.0%  100.0%  
-
-
-On a Raspberry Pi, everything is much slower. The same tests show the following
-results:
-
-$ ./benchmarks.test -test.bench=. -test.cpu=1 -test.benchtime=5s 2>/dev/null
-PASS
-Benchmark____1B             500          21316148 ns/op
-Benchmark___10B             500          23304638 ns/op
-Benchmark__100B             500          21860446 ns/op
-Benchmark___1KB             500          24000346 ns/op
-Benchmark__10KB             200          37530575 ns/op
-Benchmark_100KB             100         136243310 ns/op
-Benchmark_N_RPCs____1_chunk_____1B           500          19957506 ns/op
-Benchmark_N_RPCs____1_chunk____10B           500          22868392 ns/op
-Benchmark_N_RPCs____1_chunk___100B           500          19635412 ns/op
-Benchmark_N_RPCs____1_chunk____1KB           500          22572190 ns/op
-Benchmark_N_RPCs____1_chunk___10KB           500          37570948 ns/op
-Benchmark_N_RPCs___10_chunks___1KB           100          51670740 ns/op
-Benchmark_N_RPCs__100_chunks___1KB            50         364938740 ns/op
-Benchmark_N_RPCs_1000_chunks___1KB             2        3586374500 ns/op
-Benchmark_1_RPC_N_chunks_____1B    10000           1034042 ns/op
-Benchmark_1_RPC_N_chunks____10B     5000           1894875 ns/op
-Benchmark_1_RPC_N_chunks___100B     5000           2857289 ns/op
-Benchmark_1_RPC_N_chunks____1KB     5000           6465839 ns/op
-Benchmark_1_RPC_N_chunks___10KB      100          80019430 ns/op
-Benchmark_1_RPC_N_chunks__100KB Killed
-
-The simple 1 KB RPCs take an average of 24 ms. The streaming equivalent takes
-about 22 ms, and streaming many 1 KB chunks takes about 6.5 ms per chunk.
-
-
-$ ./benchmarkd --address=localhost:8888 --v23.permissions.literal='{"...":"A"}'
-
-$ ./benchmark --server=/localhost:8888 --count=10 --payload_size=1000
-CallEcho 0 2573406000
-CallEcho 1 44669000
-CallEcho 2 54442000
-CallEcho 3 33934000
-CallEcho 4 47985000
-CallEcho 5 61324000
-CallEcho 6 51654000
-CallEcho 7 47043000
-CallEcho 8 44995000
-CallEcho 9 53166000
-
-On the pi, the first RPC takes ~2.5 sec to execute.
diff --git a/profiles/internal/rpc/benchmark/RESULTS.txt b/profiles/internal/rpc/benchmark/RESULTS.txt
index eec067a..6460076 100644
--- a/profiles/internal/rpc/benchmark/RESULTS.txt
+++ b/profiles/internal/rpc/benchmark/RESULTS.txt
@@ -8,1606 +8,857 @@
   continuously in the same process.
 
 ================================================================================
-Date: 02/03/2015
+Date: 04/16/2015
 Platform: Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz,  66114888KB Memory
 
-Benchmark____1B	    5000	   1911937 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 4  Avg: 1.33
+Benchmark____1B-2	   10000	    805392 ns/op	   0.00 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 693  Max: 2503  Avg: 804.62
 	------------------------------------------------------------
-	[  1,   2)  3837   76.7%   76.7%  ########
-	[  2,   3)   720   14.4%   91.1%  #
-	[  3,   4)   386    7.7%   98.9%  #
-	[  4, inf)    57    1.1%  100.0%  
-Benchmark____1B-2	    5000	   1735328 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 4  Avg: 1.16
+	[ 693,  694)      2    0.0%    0.0%  
+	[ 694,  695)      1    0.0%    0.0%  
+	[ 695,  697)      2    0.0%    0.1%  
+	[ 697,  701)      2    0.0%    0.1%  
+	[ 701,  708)     25    0.2%    0.3%  
+	[ 708,  720)     91    0.9%    1.2%  
+	[ 720,  740)   1444   14.4%   15.7%  #
+	[ 740,  773)   3540   35.4%   51.1%  ####
+	[ 773,  827)   3820   38.2%   89.3%  ####
+	[ 827,  917)    534    5.3%   94.6%  #
+	[ 917, 1065)    135    1.4%   96.0%  
+	[1065, 1309)     43    0.4%   96.4%  
+	[1309, 1712)    307    3.1%   99.5%  
+	[1712, 2377)     53    0.5%  100.0%  
+	[2377, 3474)      1    0.0%  100.0%  
+	[3474, 5283)      0    0.0%  100.0%  
+	[5283,  inf)      0    0.0%  100.0%  
+Benchmark___10B-2	   10000	    808029 ns/op	   0.02 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 695  Max: 2678  Avg: 807.25
 	------------------------------------------------------------
-	[  1,   2)  4518   90.4%   90.4%  #########
-	[  2,   3)   149    3.0%   93.3%  
-	[  3,   4)   332    6.6%  100.0%  #
-	[  4, inf)     1    0.0%  100.0%  
-Benchmark___10B	    5000	   1976083 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 8  Avg: 1.37
+	[ 695,  696)      2    0.0%    0.0%  
+	[ 696,  697)      1    0.0%    0.0%  
+	[ 697,  699)      3    0.0%    0.1%  
+	[ 699,  703)      5    0.1%    0.1%  
+	[ 703,  710)     13    0.1%    0.2%  
+	[ 710,  722)    101    1.0%    1.2%  
+	[ 722,  742)    616    6.2%    7.4%  #
+	[ 742,  776)   4487   44.9%   52.3%  ####
+	[ 776,  833)   4001   40.0%   92.3%  ####
+	[ 833,  928)    397    4.0%   96.3%  
+	[ 928, 1085)    138    1.4%   97.6%  
+	[1085, 1346)      3    0.0%   97.7%  
+	[1346, 1780)     43    0.4%   98.1%  
+	[1780, 2500)    186    1.9%  100.0%  
+	[2500, 3695)      4    0.0%  100.0%  
+	[3695, 5677)      0    0.0%  100.0%  
+	[5677,  inf)      0    0.0%  100.0%  
+Benchmark__100B-2	   10000	    821234 ns/op	   0.24 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 703  Max: 3921  Avg: 820.44
 	------------------------------------------------------------
-	[  1,   2)  4554   91.1%   91.1%  #########
-	[  2,   3)    19    0.4%   91.5%  
-	[  3,   4)   102    2.0%   93.5%  
-	[  4,   5)    23    0.5%   94.0%  
-	[  5,   6)    74    1.5%   95.4%  
-	[  6,   7)   136    2.7%   98.2%  
-	[  7,   9)    92    1.8%  100.0%  
-	[  9, inf)     0    0.0%  100.0%  
-Benchmark___10B-2	    5000	   1764546 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 6  Avg: 1.17
+	[ 703,  704)      1    0.0%    0.0%  
+	[ 704,  705)      1    0.0%    0.0%  
+	[ 705,  707)      0    0.0%    0.0%  
+	[ 707,  712)      3    0.0%    0.1%  
+	[ 712,  720)      7    0.1%    0.1%  
+	[ 720,  734)     46    0.5%    0.6%  
+	[ 734,  759)    995   10.0%   10.5%  #
+	[ 759,  802)   6544   65.4%   76.0%  #######
+	[ 802,  876)   1829   18.3%   94.3%  ##
+	[ 876, 1003)    391    3.9%   98.2%  
+	[1003, 1220)     15    0.1%   98.3%  
+	[1220, 1593)      2    0.0%   98.3%  
+	[1593, 2232)     16    0.2%   98.5%  
+	[2232, 3328)    148    1.5%  100.0%  
+	[3328, 5206)      2    0.0%  100.0%  
+	[5206, 8424)      0    0.0%  100.0%  
+	[8424,  inf)      0    0.0%  100.0%  
+Benchmark___1KB-2	   10000	    836132 ns/op	   2.39 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 735  Max: 4663  Avg: 835.34
 	------------------------------------------------------------
-	[  1,   2)  4752   95.0%   95.0%  ##########
-	[  2,   3)     0    0.0%   95.0%  
-	[  3,   4)     0    0.0%   95.0%  
-	[  4,   5)   123    2.5%   97.5%  
-	[  5,   6)   123    2.5%  100.0%  
-	[  6, inf)     2    0.0%  100.0%  
-Benchmark__100B	    5000	   2065635 ns/op	   0.10 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 14  Avg: 1.44
+	[ 735,  736)      1    0.0%    0.0%  
+	[ 736,  737)      0    0.0%    0.0%  
+	[ 737,  740)      5    0.1%    0.1%  
+	[ 740,  745)     20    0.2%    0.3%  
+	[ 745,  754)    155    1.6%    1.8%  
+	[ 754,  769)   1175   11.8%   13.6%  #
+	[ 769,  796)   3923   39.2%   52.8%  ####
+	[ 796,  843)   3499   35.0%   87.8%  ###
+	[ 843,  925)    762    7.6%   95.4%  #
+	[ 925, 1068)    304    3.0%   98.4%  
+	[1068, 1316)     14    0.1%   98.6%  
+	[1316, 1748)      0    0.0%   98.6%  
+	[1748, 2498)      0    0.0%   98.6%  
+	[2498, 3801)    140    1.4%  100.0%  
+	[3801, 6063)      2    0.0%  100.0%  
+	[6063, 9991)      0    0.0%  100.0%  
+	[9991,  inf)      0    0.0%  100.0%  
+Benchmark__10KB-2	   10000	    922035 ns/op	  21.69 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 773  Max: 18022  Avg: 921.25
 	------------------------------------------------------------
-	[  1,   2)  4711   94.2%   94.2%  #########
-	[  2,   3)     6    0.1%   94.3%  
-	[  3,   4)    11    0.2%   94.6%  
-	[  4,   5)    41    0.8%   95.4%  
-	[  5,   6)    29    0.6%   96.0%  
-	[  6,   8)     1    0.0%   96.0%  
-	[  8,  10)    64    1.3%   97.3%  
-	[ 10,  13)   111    2.2%   99.5%  
-	[ 13,  16)    26    0.5%  100.0%  
-	[ 16,  20)     0    0.0%  100.0%  
-	[ 20,  25)     0    0.0%  100.0%  
-	[ 25,  31)     0    0.0%  100.0%  
-	[ 31,  38)     0    0.0%  100.0%  
-	[ 38, inf)     0    0.0%  100.0%  
-Benchmark__100B-2	    5000	   1800099 ns/op	   0.11 MB/s
+	[  773,   774)      1    0.0%    0.0%  
+	[  774,   775)      1    0.0%    0.0%  
+	[  775,   778)      2    0.0%    0.0%  
+	[  778,   785)      4    0.0%    0.1%  
+	[  785,   798)     45    0.5%    0.5%  
+	[  798,   823)   1654   16.5%   17.1%  ##
+	[  823,   872)   6089   60.9%   78.0%  ######
+	[  872,   966)   1494   14.9%   92.9%  #
+	[  966,  1147)    486    4.9%   97.8%  
+	[ 1147,  1495)      4    0.0%   97.8%  
+	[ 1495,  2162)      0    0.0%   97.8%  
+	[ 2162,  3441)     18    0.2%   98.0%  
+	[ 3441,  5892)    201    2.0%  100.0%  
+	[ 5892, 10589)      0    0.0%  100.0%  
+	[10589, 19590)      1    0.0%  100.0%  
+	[19590, 36838)      0    0.0%  100.0%  
+	[36838,   inf)      0    0.0%  100.0%  
+Benchmark_100KB-2	    5000	   2039340 ns/op	  98.07 MB/s
 --- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 9  Avg: 1.19
+	Count: 5000  Min: 1  Max: 10  Avg: 1.44
 	------------------------------------------------------------
-	[  1,   2)  4834   96.7%   96.7%  ##########
-	[  2,   3)     1    0.0%   96.7%  
-	[  3,   4)     0    0.0%   96.7%  
-	[  4,   5)     0    0.0%   96.7%  
-	[  5,   6)     0    0.0%   96.7%  
-	[  6,   8)   157    3.1%   99.8%  
-	[  8,  10)     8    0.2%  100.0%  
-	[ 10,  12)     0    0.0%  100.0%  
-	[ 12, inf)     0    0.0%  100.0%  
-Benchmark___1KB	    3000	   2160307 ns/op	   0.93 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 19  Avg: 1.50
-	------------------------------------------------------------
-	[  1,   2)  2883   96.1%   96.1%  ##########
-	[  2,   3)     0    0.0%   96.1%  
-	[  3,   4)     0    0.0%   96.1%  
-	[  4,   5)     0    0.0%   96.1%  
-	[  5,   7)     8    0.3%   96.4%  
-	[  7,   9)    20    0.7%   97.0%  
-	[  9,  12)     0    0.0%   97.0%  
-	[ 12,  15)    28    0.9%   98.0%  
-	[ 15,  19)    53    1.8%   99.7%  
-	[ 19,  24)     8    0.3%  100.0%  
-	[ 24,  30)     0    0.0%  100.0%  
-	[ 30,  38)     0    0.0%  100.0%  
-	[ 38,  48)     0    0.0%  100.0%  
-	[ 48,  60)     0    0.0%  100.0%  
-	[ 60,  74)     0    0.0%  100.0%  
-	[ 74,  91)     0    0.0%  100.0%  
-	[ 91, inf)     0    0.0%  100.0%  
-Benchmark___1KB-2	    5000	   1845717 ns/op	   1.08 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 10  Avg: 1.22
-	------------------------------------------------------------
-	[  1,   2)  4857   97.1%   97.1%  ##########
-	[  2,   3)     7    0.1%   97.3%  
-	[  3,   4)     0    0.0%   97.3%  
-	[  4,   5)     0    0.0%   97.3%  
-	[  5,   6)     0    0.0%   97.3%  
-	[  6,   8)     0    0.0%   97.3%  
-	[  8,  10)   123    2.5%   99.7%  
-	[ 10,  12)    13    0.3%  100.0%  
+	[  1,   2)  4496   89.9%   89.9%  #########
+	[  2,   3)    66    1.3%   91.2%  
+	[  3,   4)     0    0.0%   91.2%  
+	[  4,   5)   119    2.4%   93.6%  
+	[  5,   6)   162    3.2%   96.9%  
+	[  6,   8)    26    0.5%   97.4%  
+	[  8,  10)   123    2.5%   99.8%  
+	[ 10,  12)     8    0.2%  100.0%  
 	[ 12,  15)     0    0.0%  100.0%  
 	[ 15, inf)     0    0.0%  100.0%  
-Benchmark__10KB	    3000	   2461125 ns/op	   8.13 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 24  Avg: 1.65
+
+Benchmark____1_chunk_____1B-2	   10000	   1008412 ns/op	   0.00 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 871  Max: 2447  Avg: 1007.61
 	------------------------------------------------------------
-	[  1,   2)  2865   95.5%   95.5%  ##########
-	[  2,   3)    19    0.6%   96.1%  
-	[  3,   4)     0    0.0%   96.1%  
-	[  4,   5)     0    0.0%   96.1%  
-	[  5,   7)     0    0.0%   96.1%  
-	[  7,   9)    27    0.9%   97.0%  
-	[  9,  12)     1    0.0%   97.1%  
-	[ 12,  16)     0    0.0%   97.1%  
-	[ 16,  21)    28    0.9%   98.0%  
-	[ 21,  27)    60    2.0%  100.0%  
-	[ 27,  35)     0    0.0%  100.0%  
-	[ 35,  44)     0    0.0%  100.0%  
-	[ 44,  56)     0    0.0%  100.0%  
-	[ 56,  71)     0    0.0%  100.0%  
-	[ 71,  89)     0    0.0%  100.0%  
-	[ 89, 111)     0    0.0%  100.0%  
-	[111, inf)     0    0.0%  100.0%  
-Benchmark__10KB-2	    5000	   2002215 ns/op	   9.99 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 12  Avg: 1.32
+	[ 871,  872)      1    0.0%    0.0%  
+	[ 872,  873)      0    0.0%    0.0%  
+	[ 873,  875)      0    0.0%    0.0%  
+	[ 875,  879)      1    0.0%    0.0%  
+	[ 879,  886)      1    0.0%    0.0%  
+	[ 886,  897)     13    0.1%    0.2%  
+	[ 897,  916)    130    1.3%    1.5%  
+	[ 916,  947)   3640   36.4%   37.9%  ####
+	[ 947,  997)   4612   46.1%   84.0%  #####
+	[ 997, 1079)    739    7.4%   91.4%  #
+	[1079, 1214)    304    3.0%   94.4%  
+	[1214, 1435)     37    0.4%   94.8%  
+	[1435, 1796)    291    2.9%   97.7%  
+	[1796, 2386)    230    2.3%  100.0%  
+	[2386, 3350)      1    0.0%  100.0%  
+	[3350, 4925)      0    0.0%  100.0%  
+	[4925,  inf)      0    0.0%  100.0%  
+Benchmark____1_chunk____10B-2	   10000	   1132272 ns/op	   0.02 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 907  Max: 4069  Avg: 1131.39
 	------------------------------------------------------------
-	[  1,   2)  4634   92.7%   92.7%  #########
-	[  2,   3)   230    4.6%   97.3%  
-	[  3,   4)     0    0.0%   97.3%  
+	[ 907,  908)      1    0.0%    0.0%  
+	[ 908,  909)      0    0.0%    0.0%  
+	[ 909,  911)      1    0.0%    0.0%  
+	[ 911,  916)      5    0.1%    0.1%  
+	[ 916,  924)     69    0.7%    0.8%  
+	[ 924,  938)    516    5.2%    5.9%  #
+	[ 938,  963)   1376   13.8%   19.7%  #
+	[ 963, 1005)   1147   11.5%   31.2%  #
+	[1005, 1078)    791    7.9%   39.1%  #
+	[1078, 1203)   4877   48.8%   87.8%  #####
+	[1203, 1418)    884    8.8%   96.7%  #
+	[1418, 1786)     19    0.2%   96.9%  
+	[1786, 2416)    122    1.2%   98.1%  
+	[2416, 3495)    172    1.7%   99.8%  
+	[3495, 5342)     20    0.2%  100.0%  
+	[5342, 8503)      0    0.0%  100.0%  
+	[8503,  inf)      0    0.0%  100.0%  
+Benchmark____1_chunk___100B-2	   10000	   1183806 ns/op	   0.17 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 909  Max: 6281  Avg: 1182.87
+	------------------------------------------------------------
+	[  909,   910)      1    0.0%    0.0%  
+	[  910,   911)      0    0.0%    0.0%  
+	[  911,   914)      0    0.0%    0.0%  
+	[  914,   919)      2    0.0%    0.0%  
+	[  919,   928)     30    0.3%    0.3%  
+	[  928,   945)    177    1.8%    2.1%  
+	[  945,   976)    422    4.2%    6.3%  
+	[  976,  1031)    390    3.9%   10.2%  
+	[ 1031,  1128)   3324   33.2%   43.5%  ###
+	[ 1128,  1301)   5231   52.3%   95.8%  #####
+	[ 1301,  1607)    198    2.0%   97.8%  
+	[ 1607,  2150)      0    0.0%   97.8%  
+	[ 2150,  3114)     96    1.0%   98.7%  
+	[ 3114,  4823)    111    1.1%   99.8%  
+	[ 4823,  7853)     18    0.2%  100.0%  
+	[ 7853, 13224)      0    0.0%  100.0%  
+	[13224,   inf)      0    0.0%  100.0%  
+Benchmark____1_chunk____1KB-2	   10000	   1176691 ns/op	   1.70 MB/s
+--- Histogram (unit: µs)
+	Count: 10000  Min: 901  Max: 8877  Avg: 1175.76
+	------------------------------------------------------------
+	[  901,   902)      1    0.0%    0.0%  
+	[  902,   903)      0    0.0%    0.0%  
+	[  903,   906)      0    0.0%    0.0%  
+	[  906,   912)      0    0.0%    0.0%  
+	[  912,   922)      0    0.0%    0.0%  
+	[  922,   941)     59    0.6%    0.6%  
+	[  941,   977)    562    5.6%    6.2%  #
+	[  977,  1043)    795    8.0%   14.2%  #
+	[ 1043,  1163)   5802   58.0%   72.2%  ######
+	[ 1163,  1382)   2543   25.4%   97.6%  ###
+	[ 1382,  1781)     54    0.5%   98.2%  
+	[ 1781,  2507)      0    0.0%   98.2%  
+	[ 2507,  3829)    123    1.2%   99.4%  
+	[ 3829,  6236)     56    0.6%  100.0%  
+	[ 6236, 10617)      5    0.1%  100.0%  
+	[10617, 18592)      0    0.0%  100.0%  
+	[18592,   inf)      0    0.0%  100.0%  
+Benchmark____1_chunk___10KB-2	    5000	   1209775 ns/op	  16.53 MB/s
+--- Histogram (unit: µs)
+	Count: 5000  Min: 931  Max: 6999  Avg: 1208.87
+	------------------------------------------------------------
+	[  931,   932)     1    0.0%    0.0%  
+	[  932,   933)     0    0.0%    0.0%  
+	[  933,   936)     1    0.0%    0.0%  
+	[  936,   941)     3    0.1%    0.1%  
+	[  941,   951)    23    0.5%    0.6%  
+	[  951,   969)   114    2.3%    2.8%  
+	[  969,  1001)   302    6.0%    8.9%  #
+	[ 1001,  1059)   872   17.4%   26.3%  ##
+	[ 1059,  1163)  2295   45.9%   72.2%  #####
+	[ 1163,  1349)  1104   22.1%   94.3%  ##
+	[ 1349,  1681)   158    3.2%   97.5%  
+	[ 1681,  2275)     0    0.0%   97.5%  
+	[ 2275,  3337)     0    0.0%   97.5%  
+	[ 3337,  5236)    79    1.6%   99.0%  
+	[ 5236,  8631)    48    1.0%  100.0%  
+	[ 8631, 14699)     0    0.0%  100.0%  
+	[14699,   inf)     0    0.0%  100.0%  
+Benchmark____1_chunk__100KB-2	    3000	   2075895 ns/op	  96.34 MB/s
+--- Histogram (unit: ms)
+	Count: 3000  Min: 1  Max: 7  Avg: 1.40
+	------------------------------------------------------------
+	[  1,   2)  2569   85.6%   85.6%  #########
+	[  2,   3)   155    5.2%   90.8%  #
+	[  3,   4)     0    0.0%   90.8%  
+	[  4,   5)   141    4.7%   95.5%  
+	[  5,   6)    74    2.5%   98.0%  
+	[  6,   7)    38    1.3%   99.2%  
+	[  7, inf)    23    0.8%  100.0%  
+Benchmark___10_chunk_____1B-2	    3000	   2076926 ns/op	   0.01 MB/s
+--- Histogram (unit: ms)
+	Count: 3000  Min: 1  Max: 5  Avg: 1.26
+	------------------------------------------------------------
+	[  1,   2)  2489   83.0%   83.0%  ########
+	[  2,   3)   416   13.9%   96.8%  #
+	[  3,   4)     0    0.0%   96.8%  
+	[  4,   5)     6    0.2%   97.0%  
+	[  5, inf)    89    3.0%  100.0%  
+Benchmark___10_chunk____10B-2	    3000	   2229984 ns/op	   0.09 MB/s
+--- Histogram (unit: ms)
+	Count: 3000  Min: 1  Max: 10  Avg: 1.75
+	------------------------------------------------------------
+	[  1,   2)  1141   38.0%   38.0%  ####
+	[  2,   3)  1758   58.6%   96.6%  ######
+	[  3,   4)    15    0.5%   97.1%  
+	[  4,   5)     0    0.0%   97.1%  
+	[  5,   6)    33    1.1%   98.2%  
+	[  6,   8)    30    1.0%   99.2%  
+	[  8,  10)    14    0.5%   99.7%  
+	[ 10,  12)     9    0.3%  100.0%  
+	[ 12,  15)     0    0.0%  100.0%  
+	[ 15, inf)     0    0.0%  100.0%  
+Benchmark___10_chunk___100B-2	    3000	   2348741 ns/op	   0.85 MB/s
+--- Histogram (unit: ms)
+	Count: 3000  Min: 1  Max: 12  Avg: 2.07
+	------------------------------------------------------------
+	[  1,   2)   278    9.3%    9.3%  #
+	[  2,   3)  2613   87.1%   96.4%  #########
+	[  3,   4)    29    1.0%   97.3%  
 	[  4,   5)     0    0.0%   97.3%  
 	[  5,   6)     0    0.0%   97.3%  
-	[  6,   8)     0    0.0%   97.3%  
-	[  8,  10)     0    0.0%   97.3%  
-	[ 10,  13)   136    2.7%  100.0%  
+	[  6,   8)    44    1.5%   98.8%  
+	[  8,  10)     9    0.3%   99.1%  
+	[ 10,  13)    27    0.9%  100.0%  
 	[ 13,  16)     0    0.0%  100.0%  
 	[ 16,  20)     0    0.0%  100.0%  
 	[ 20,  24)     0    0.0%  100.0%  
 	[ 24, inf)     0    0.0%  100.0%  
-Benchmark_100KB	    2000	   4987528 ns/op	  40.10 MB/s
+Benchmark___10_chunk____1KB-2	    3000	   2426600 ns/op	   8.24 MB/s
 --- Histogram (unit: ms)
-	Count: 2000  Min: 3  Max: 28  Avg: 4.44
+	Count: 3000  Min: 1  Max: 11  Avg: 2.15
 	------------------------------------------------------------
-	[  3,   4)  1846   92.3%   92.3%  #########
-	[  4,   5)     3    0.2%   92.5%  
-	[  5,   6)     0    0.0%   92.5%  
-	[  6,   7)     0    0.0%   92.5%  
-	[  7,   9)    28    1.4%   93.9%  
-	[  9,  11)     1    0.1%   93.9%  
-	[ 11,  14)     0    0.0%   93.9%  
-	[ 14,  18)     0    0.0%   93.9%  
-	[ 18,  23)    29    1.5%   95.4%  
-	[ 23,  29)    93    4.7%  100.0%  
-	[ 29,  37)     0    0.0%  100.0%  
-	[ 37,  47)     0    0.0%  100.0%  
-	[ 47,  60)     0    0.0%  100.0%  
-	[ 60,  76)     0    0.0%  100.0%  
-	[ 76,  96)     0    0.0%  100.0%  
-	[ 96, 120)     0    0.0%  100.0%  
-	[120, inf)     0    0.0%  100.0%  
-Benchmark_100KB-2	    2000	   3358703 ns/op	  59.55 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 15  Avg: 2.78
-	------------------------------------------------------------
-	[  2,   3)  1755   87.8%   87.8%  #########
-	[  3,   4)    74    3.7%   91.5%  
-	[  4,   5)    53    2.7%   94.1%  
-	[  5,   6)     0    0.0%   94.1%  
-	[  6,   7)     0    0.0%   94.1%  
-	[  7,   9)     0    0.0%   94.1%  
-	[  9,  11)     0    0.0%   94.1%  
-	[ 11,  14)    36    1.8%   95.9%  
-	[ 14,  17)    82    4.1%  100.0%  
-	[ 17,  21)     0    0.0%  100.0%  
-	[ 21,  26)     0    0.0%  100.0%  
-	[ 26,  32)     0    0.0%  100.0%  
-	[ 32,  39)     0    0.0%  100.0%  
-	[ 39, inf)     0    0.0%  100.0%  
-
-Benchmark____1_chunk_____1B	    3000	   2147302 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 4  Avg: 1.43
-	------------------------------------------------------------
-	[  1,   2)  2049   68.3%   68.3%  #######
-	[  2,   3)   628   20.9%   89.2%  ##
-	[  3,   4)   321   10.7%   99.9%  #
-	[  4, inf)     2    0.1%  100.0%  
-Benchmark____1_chunk_____1B-2	    5000	   1892882 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 4  Avg: 1.20
-	------------------------------------------------------------
-	[  1,   2)  4363   87.3%   87.3%  #########
-	[  2,   3)   286    5.7%   93.0%  #
-	[  3,   4)   350    7.0%  100.0%  #
-	[  4, inf)     1    0.0%  100.0%  
-Benchmark____1_chunk____10B	    3000	   2225520 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 7  Avg: 1.44
-	------------------------------------------------------------
-	[  1,   2)  2609   87.0%   87.0%  #########
-	[  2,   3)    62    2.1%   89.0%  
-	[  3,   4)    75    2.5%   91.5%  
-	[  4,   5)    46    1.5%   93.1%  
-	[  5,   6)    90    3.0%   96.1%  
-	[  6,   7)   112    3.7%   99.8%  
-	[  7, inf)     6    0.2%  100.0%  
-Benchmark____1_chunk____10B-2	    5000	   1921505 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 6  Avg: 1.21
-	------------------------------------------------------------
-	[  1,   2)  4576   91.5%   91.5%  #########
-	[  2,   3)   100    2.0%   93.5%  
-	[  3,   4)    27    0.5%   94.1%  
-	[  4,   5)   279    5.6%   99.6%  #
-	[  5,   6)    17    0.3%  100.0%  
-	[  6, inf)     1    0.0%  100.0%  
-Benchmark____1_chunk___100B	    3000	   2282133 ns/op	   0.09 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 11  Avg: 1.47
-	------------------------------------------------------------
-	[  1,   2)  2705   90.2%   90.2%  #########
-	[  2,   3)    66    2.2%   92.4%  
-	[  3,   4)    13    0.4%   92.8%  
-	[  4,   5)    59    2.0%   94.8%  
-	[  5,   6)     0    0.0%   94.8%  
-	[  6,   8)    68    2.3%   97.0%  
-	[  8,  10)    51    1.7%   98.7%  
-	[ 10,  12)    38    1.3%  100.0%  
+	[  1,   2)   119    4.0%    4.0%  
+	[  2,   3)  2730   91.0%   95.0%  #########
+	[  3,   4)    59    2.0%   96.9%  
+	[  4,   5)     0    0.0%   96.9%  
+	[  5,   6)     1    0.0%   97.0%  
+	[  6,   8)    55    1.8%   98.8%  
+	[  8,  10)    10    0.3%   99.1%  
+	[ 10,  12)    26    0.9%  100.0%  
 	[ 12,  15)     0    0.0%  100.0%  
 	[ 15,  18)     0    0.0%  100.0%  
 	[ 18, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk___100B-2	    5000	   1953792 ns/op	   0.10 MB/s
+Benchmark___10_chunk___10KB-2	    2000	   3151285 ns/op	  63.47 MB/s
 --- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 6  Avg: 1.25
+	Count: 2000  Min: 2  Max: 12  Avg: 2.51
 	------------------------------------------------------------
-	[  1,   2)  4543   90.9%   90.9%  #########
-	[  2,   3)   234    4.7%   95.5%  
-	[  3,   4)     0    0.0%   95.5%  
-	[  4,   5)     0    0.0%   95.5%  
-	[  5,   6)    91    1.8%   97.4%  
-	[  6, inf)   132    2.6%  100.0%  
-Benchmark____1_chunk____1KB	    3000	   2417281 ns/op	   0.83 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 19  Avg: 1.63
-	------------------------------------------------------------
-	[  1,   2)  2522   84.1%   84.1%  ########
-	[  2,   3)   331   11.0%   95.1%  #
-	[  3,   4)     1    0.0%   95.1%  
-	[  4,   5)     1    0.0%   95.2%  
-	[  5,   7)    30    1.0%   96.2%  
-	[  7,   9)     2    0.1%   96.2%  
-	[  9,  12)    30    1.0%   97.2%  
-	[ 12,  15)    49    1.6%   98.9%  
-	[ 15,  19)    33    1.1%  100.0%  
-	[ 19,  24)     1    0.0%  100.0%  
-	[ 24,  30)     0    0.0%  100.0%  
-	[ 30,  38)     0    0.0%  100.0%  
-	[ 38,  48)     0    0.0%  100.0%  
-	[ 48,  60)     0    0.0%  100.0%  
-	[ 60,  74)     0    0.0%  100.0%  
-	[ 74,  91)     0    0.0%  100.0%  
-	[ 91, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk____1KB-2	    5000	   2015100 ns/op	   0.99 MB/s
---- Histogram (unit: ms)
-	Count: 5000  Min: 1  Max: 8  Avg: 1.30
-	------------------------------------------------------------
-	[  1,   2)  4453   89.1%   89.1%  #########
-	[  2,   3)   379    7.6%   96.6%  #
-	[  3,   4)     0    0.0%   96.6%  
-	[  4,   5)     0    0.0%   96.6%  
-	[  5,   6)     0    0.0%   96.6%  
-	[  6,   7)     0    0.0%   96.6%  
-	[  7,   9)   168    3.4%  100.0%  
-	[  9, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk___10KB	    3000	   2703920 ns/op	   7.40 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 2  Max: 20  Avg: 2.61
-	------------------------------------------------------------
-	[  2,   3)  2858   95.3%   95.3%  ##########
-	[  3,   4)     0    0.0%   95.3%  
-	[  4,   5)     0    0.0%   95.3%  
-	[  5,   6)     0    0.0%   95.3%  
-	[  6,   8)    34    1.1%   96.4%  
-	[  8,  10)     1    0.0%   96.4%  
-	[ 10,  13)     0    0.0%   96.4%  
-	[ 13,  16)    34    1.1%   97.6%  
-	[ 16,  20)    49    1.6%   99.2%  
-	[ 20,  25)    24    0.8%  100.0%  
-	[ 25,  31)     0    0.0%  100.0%  
-	[ 31,  39)     0    0.0%  100.0%  
-	[ 39,  49)     0    0.0%  100.0%  
-	[ 49,  61)     0    0.0%  100.0%  
-	[ 61,  75)     0    0.0%  100.0%  
-	[ 75,  92)     0    0.0%  100.0%  
-	[ 92, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk___10KB-2	    3000	   2201032 ns/op	   9.09 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 1  Max: 11  Avg: 1.48
-	------------------------------------------------------------
-	[  1,   2)  2307   76.9%   76.9%  ########
-	[  2,   3)   593   19.8%   96.7%  ##
-	[  3,   4)     0    0.0%   96.7%  
-	[  4,   5)     0    0.0%   96.7%  
-	[  5,   6)     0    0.0%   96.7%  
-	[  6,   8)     0    0.0%   96.7%  
-	[  8,  10)    50    1.7%   98.3%  
-	[ 10,  12)    50    1.7%  100.0%  
-	[ 12,  15)     0    0.0%  100.0%  
-	[ 15,  18)     0    0.0%  100.0%  
-	[ 18, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk__100KB	    2000	   5233249 ns/op	  38.22 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 3  Max: 27  Avg: 4.53
-	------------------------------------------------------------
-	[  3,   4)  1654   82.7%   82.7%  ########
-	[  4,   5)   130    6.5%   89.2%  #
-	[  5,   6)     0    0.0%   89.2%  
-	[  6,   7)     0    0.0%   89.2%  
-	[  7,   9)    70    3.5%   92.7%  
-	[  9,  11)     2    0.1%   92.8%  
-	[ 11,  14)     0    0.0%   92.8%  
-	[ 14,  18)     0    0.0%   92.8%  
-	[ 18,  23)    87    4.4%   97.2%  
-	[ 23,  29)    57    2.9%  100.0%  
-	[ 29,  37)     0    0.0%  100.0%  
-	[ 37,  47)     0    0.0%  100.0%  
-	[ 47,  59)     0    0.0%  100.0%  
-	[ 59,  74)     0    0.0%  100.0%  
-	[ 74,  93)     0    0.0%  100.0%  
-	[ 93, 117)     0    0.0%  100.0%  
-	[117, inf)     0    0.0%  100.0%  
-Benchmark____1_chunk__100KB-2	    2000	   3569385 ns/op	  56.03 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 13  Avg: 2.82
-	------------------------------------------------------------
-	[  2,   3)  1669   83.5%   83.5%  ########
-	[  3,   4)   163    8.2%   91.6%  #
-	[  4,   5)    29    1.5%   93.1%  
-	[  5,   6)     0    0.0%   93.1%  
-	[  6,   7)     0    0.0%   93.1%  
-	[  7,   9)     0    0.0%   93.1%  
-	[  9,  11)     0    0.0%   93.1%  
-	[ 11,  14)   139    7.0%  100.0%  #
-	[ 14,  17)     0    0.0%  100.0%  
-	[ 17,  21)     0    0.0%  100.0%  
-	[ 21,  25)     0    0.0%  100.0%  
-	[ 25, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk_____1B	    2000	   3741137 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 29  Avg: 3.15
-	------------------------------------------------------------
-	[  2,   3)  1180   59.0%   59.0%  ######
-	[  3,   4)   739   37.0%   96.0%  ####
-	[  4,   5)     0    0.0%   96.0%  
-	[  5,   6)     0    0.0%   96.0%  
-	[  6,   8)     0    0.0%   96.0%  
-	[  8,  11)     3    0.2%   96.1%  
-	[ 11,  14)    17    0.9%   97.0%  
-	[ 14,  18)     0    0.0%   97.0%  
-	[ 18,  23)    20    1.0%   98.0%  
-	[ 23,  30)    41    2.1%  100.0%  
-	[ 30,  39)     0    0.0%  100.0%  
-	[ 39,  50)     0    0.0%  100.0%  
-	[ 50,  63)     0    0.0%  100.0%  
-	[ 63,  80)     0    0.0%  100.0%  
-	[ 80, 101)     0    0.0%  100.0%  
-	[101, 128)     0    0.0%  100.0%  
-	[128, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk_____1B-2	    3000	   2846887 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 2  Max: 18  Avg: 2.43
-	------------------------------------------------------------
-	[  2,   3)  2700   90.0%   90.0%  #########
-	[  3,   4)   211    7.0%   97.0%  #
-	[  4,   5)     1    0.0%   97.1%  
-	[  5,   6)     0    0.0%   97.1%  
-	[  6,   8)     0    0.0%   97.1%  
-	[  8,  10)     0    0.0%   97.1%  
-	[ 10,  13)    25    0.8%   97.9%  
-	[ 13,  16)    31    1.0%   98.9%  
-	[ 16,  20)    32    1.1%  100.0%  
-	[ 20,  25)     0    0.0%  100.0%  
-	[ 25,  31)     0    0.0%  100.0%  
-	[ 31,  38)     0    0.0%  100.0%  
-	[ 38,  47)     0    0.0%  100.0%  
-	[ 47,  58)     0    0.0%  100.0%  
-	[ 58,  71)     0    0.0%  100.0%  
-	[ 71,  87)     0    0.0%  100.0%  
-	[ 87, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk____10B	    2000	   3793093 ns/op	   0.05 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 33  Avg: 3.19
-	------------------------------------------------------------
-	[  2,   3)  1187   59.4%   59.4%  ######
-	[  3,   4)   737   36.9%   96.2%  ####
-	[  4,   5)     0    0.0%   96.2%  
-	[  5,   6)     0    0.0%   96.2%  
-	[  6,   8)     0    0.0%   96.2%  
-	[  8,  11)     0    0.0%   96.2%  
-	[ 11,  14)    20    1.0%   97.2%  
-	[ 14,  18)     0    0.0%   97.2%  
-	[ 18,  24)    20    1.0%   98.2%  
-	[ 24,  31)     2    0.1%   98.3%  
-	[ 31,  40)    34    1.7%  100.0%  
-	[ 40,  52)     0    0.0%  100.0%  
-	[ 52,  67)     0    0.0%  100.0%  
-	[ 67,  86)     0    0.0%  100.0%  
-	[ 86, 110)     0    0.0%  100.0%  
-	[110, 140)     0    0.0%  100.0%  
-	[140, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk____10B-2	    3000	   2683120 ns/op	   0.07 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 2  Max: 15  Avg: 2.39
-	------------------------------------------------------------
-	[  2,   3)  2713   90.4%   90.4%  #########
-	[  3,   4)   207    6.9%   97.3%  #
-	[  4,   5)     0    0.0%   97.3%  
-	[  5,   6)     0    0.0%   97.3%  
-	[  6,   7)     0    0.0%   97.3%  
-	[  7,   9)     0    0.0%   97.3%  
-	[  9,  11)     0    0.0%   97.3%  
-	[ 11,  14)     7    0.2%   97.6%  
-	[ 14,  17)    73    2.4%  100.0%  
-	[ 17,  21)     0    0.0%  100.0%  
-	[ 21,  26)     0    0.0%  100.0%  
-	[ 26,  32)     0    0.0%  100.0%  
-	[ 32,  39)     0    0.0%  100.0%  
-	[ 39, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk___100B	    2000	   3847823 ns/op	   0.52 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 38  Avg: 3.35
-	------------------------------------------------------------
-	[  2,   3)   902   45.1%   45.1%  #####
-	[  3,   4)  1034   51.7%   96.8%  #####
-	[  4,   5)     0    0.0%   96.8%  
-	[  5,   7)     0    0.0%   96.8%  
-	[  7,   9)     0    0.0%   96.8%  
-	[  9,  12)     0    0.0%   96.8%  
-	[ 12,  16)    16    0.8%   97.6%  
-	[ 16,  21)     0    0.0%   97.6%  
-	[ 21,  27)    16    0.8%   98.4%  
-	[ 27,  35)     0    0.0%   98.4%  
-	[ 35,  45)    32    1.6%  100.0%  
-	[ 45,  58)     0    0.0%  100.0%  
-	[ 58,  75)     0    0.0%  100.0%  
-	[ 75,  97)     0    0.0%  100.0%  
-	[ 97, 125)     0    0.0%  100.0%  
-	[125, 161)     0    0.0%  100.0%  
-	[161, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk___100B-2	    3000	   2917670 ns/op	   0.69 MB/s
---- Histogram (unit: ms)
-	Count: 3000  Min: 2  Max: 23  Avg: 2.47
-	------------------------------------------------------------
-	[  2,   3)  2687   89.6%   89.6%  #########
-	[  3,   4)   227    7.6%   97.1%  #
-	[  4,   5)    14    0.5%   97.6%  
-	[  5,   6)     0    0.0%   97.6%  
-	[  6,   8)     0    0.0%   97.6%  
-	[  8,  10)     0    0.0%   97.6%  
-	[ 10,  13)     0    0.0%   97.6%  
-	[ 13,  17)    30    1.0%   98.6%  
-	[ 17,  22)    37    1.2%   99.8%  
-	[ 22,  28)     5    0.2%  100.0%  
-	[ 28,  35)     0    0.0%  100.0%  
-	[ 35,  44)     0    0.0%  100.0%  
-	[ 44,  55)     0    0.0%  100.0%  
-	[ 55,  68)     0    0.0%  100.0%  
-	[ 68,  85)     0    0.0%  100.0%  
-	[ 85, 105)     0    0.0%  100.0%  
-	[105, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk____1KB	    2000	   4485605 ns/op	   4.46 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 3  Max: 53  Avg: 4.14
-	------------------------------------------------------------
-	[  3,   4)  1903   95.2%   95.2%  ##########
-	[  4,   5)     3    0.2%   95.3%  
-	[  5,   6)    11    0.6%   95.9%  
-	[  6,   8)    12    0.6%   96.5%  
-	[  8,  10)     0    0.0%   96.5%  
-	[ 10,  13)     0    0.0%   96.5%  
-	[ 13,  17)     0    0.0%   96.5%  
-	[ 17,  23)    22    1.1%   97.6%  
-	[ 23,  31)     0    0.0%   97.6%  
-	[ 31,  41)    22    1.1%   98.7%  
-	[ 41,  54)    27    1.4%  100.0%  
-	[ 54,  71)     0    0.0%  100.0%  
-	[ 71,  93)     0    0.0%  100.0%  
-	[ 93, 122)     0    0.0%  100.0%  
-	[122, 160)     0    0.0%  100.0%  
-	[160, 210)     0    0.0%  100.0%  
-	[210, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk____1KB-2	    2000	   3174383 ns/op	   6.30 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 24  Avg: 2.56
-	------------------------------------------------------------
-	[  2,   3)  1733   86.7%   86.7%  #########
-	[  3,   4)   198    9.9%   96.6%  #
-	[  4,   5)    20    1.0%   97.6%  
-	[  5,   6)     0    0.0%   97.6%  
-	[  6,   8)     0    0.0%   97.6%  
-	[  8,  10)     0    0.0%   97.6%  
-	[ 10,  13)     0    0.0%   97.6%  
-	[ 13,  17)     1    0.1%   97.6%  
-	[ 17,  22)    27    1.4%   99.0%  
-	[ 22,  28)    21    1.1%  100.0%  
-	[ 28,  35)     0    0.0%  100.0%  
-	[ 35,  44)     0    0.0%  100.0%  
-	[ 44,  55)     0    0.0%  100.0%  
-	[ 55,  69)     0    0.0%  100.0%  
-	[ 69,  86)     0    0.0%  100.0%  
-	[ 86, 107)     0    0.0%  100.0%  
-	[107, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk___10KB	    1000	   6269496 ns/op	  31.90 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 4  Max: 46  Avg: 5.53
-	------------------------------------------------------------
-	[  4,   5)   884   88.4%   88.4%  #########
-	[  5,   6)    70    7.0%   95.4%  #
-	[  6,   7)     0    0.0%   95.4%  
-	[  7,   9)     0    0.0%   95.4%  
-	[  9,  11)     0    0.0%   95.4%  
-	[ 11,  14)     0    0.0%   95.4%  
-	[ 14,  18)     7    0.7%   96.1%  
-	[ 18,  23)     0    0.0%   96.1%  
-	[ 23,  30)     0    0.0%   96.1%  
-	[ 30,  39)     7    0.7%   96.8%  
-	[ 39,  51)    32    3.2%  100.0%  
-	[ 51,  66)     0    0.0%  100.0%  
-	[ 66,  85)     0    0.0%  100.0%  
-	[ 85, 110)     0    0.0%  100.0%  
-	[110, 142)     0    0.0%  100.0%  
-	[142, 184)     0    0.0%  100.0%  
-	[184, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk___10KB-2	    2000	   4354054 ns/op	  45.93 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 2  Max: 26  Avg: 3.88
-	------------------------------------------------------------
-	[  2,   3)     3    0.2%    0.2%  
-	[  3,   4)  1758   87.9%   88.1%  #########
-	[  4,   5)    40    2.0%   90.1%  
-	[  5,   6)   120    6.0%   96.1%  #
-	[  6,   8)     1    0.1%   96.1%  
-	[  8,  10)     0    0.0%   96.1%  
-	[ 10,  13)     0    0.0%   96.1%  
-	[ 13,  17)     0    0.0%   96.1%  
-	[ 17,  22)    30    1.5%   97.6%  
-	[ 22,  28)    48    2.4%  100.0%  
-	[ 28,  36)     0    0.0%  100.0%  
-	[ 36,  46)     0    0.0%  100.0%  
-	[ 46,  58)     0    0.0%  100.0%  
-	[ 58,  73)     0    0.0%  100.0%  
-	[ 73,  92)     0    0.0%  100.0%  
-	[ 92, 116)     0    0.0%  100.0%  
-	[116, inf)     0    0.0%  100.0%  
-Benchmark___10_chunk__100KB	     300	  27690944 ns/op	  72.23 MB/s
---- Histogram (unit: ms)
-	Count: 300  Min: 21  Max: 58  Avg: 27.25
-	------------------------------------------------------------
-	[ 21,  22)  209   69.7%   69.7%  #######
-	[ 22,  23)   15    5.0%   74.7%  #
-	[ 23,  24)    1    0.3%   75.0%  
-	[ 24,  26)    0    0.0%   75.0%  
-	[ 26,  28)    0    0.0%   75.0%  
-	[ 28,  31)   22    7.3%   82.3%  #
-	[ 31,  35)    0    0.0%   82.3%  
-	[ 35,  40)    0    0.0%   82.3%  
-	[ 40,  46)    0    0.0%   82.3%  
-	[ 46,  54)   23    7.7%   90.0%  #
-	[ 54,  65)   30   10.0%  100.0%  #
-	[ 65,  79)    0    0.0%  100.0%  
-	[ 79,  96)    0    0.0%  100.0%  
-	[ 96, 118)    0    0.0%  100.0%  
-	[118, 147)    0    0.0%  100.0%  
-	[147, 183)    0    0.0%  100.0%  
-	[183, inf)    0    0.0%  100.0%  
-Benchmark___10_chunk__100KB-2	     500	  15686136 ns/op	 127.50 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 11  Max: 37  Avg: 15.20
-	------------------------------------------------------------
-	[ 11,  12)  147   29.4%   29.4%  ###
-	[ 12,  13)  237   47.4%   76.8%  #####
-	[ 13,  14)   11    2.2%   79.0%  
-	[ 14,  15)    2    0.4%   79.4%  
-	[ 15,  17)   14    2.8%   82.2%  
-	[ 17,  19)    2    0.4%   82.6%  
-	[ 19,  22)    0    0.0%   82.6%  
-	[ 22,  26)    0    0.0%   82.6%  
-	[ 26,  31)   49    9.8%   92.4%  #
-	[ 31,  38)   38    7.6%  100.0%  #
-	[ 38,  46)    0    0.0%  100.0%  
-	[ 46,  56)    0    0.0%  100.0%  
-	[ 56,  69)    0    0.0%  100.0%  
-	[ 69,  85)    0    0.0%  100.0%  
-	[ 85, 105)    0    0.0%  100.0%  
-	[105, 130)    0    0.0%  100.0%  
-	[130, inf)    0    0.0%  100.0%  
-
-Benchmark__100_chunk_____1B	     500	  15105687 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 14  Max: 16  Avg: 14.60
-	------------------------------------------------------------
-	[ 14,  15)  222   44.4%   44.4%  ####
-	[ 15,  16)  258   51.6%   96.0%  #####
-	[ 16, inf)   20    4.0%  100.0%  
-Benchmark__100_chunk_____1B-2	    1000	  10873485 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 8  Max: 13  Avg: 10.38
-	------------------------------------------------------------
-	[  8,   9)     5    0.5%    0.5%  
-	[  9,  10)   119   11.9%   12.4%  #
-	[ 10,  11)   465   46.5%   58.9%  #####
-	[ 11,  12)   316   31.6%   90.5%  ###
-	[ 12,  13)    93    9.3%   99.8%  #
-	[ 13, inf)     2    0.2%  100.0%  
-Benchmark__100_chunk____10B	     500	  15092213 ns/op	   0.13 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 13  Max: 17  Avg: 14.67
-	------------------------------------------------------------
-	[ 13,  14)    1    0.2%    0.2%  
-	[ 14,  15)  174   34.8%   35.0%  ###
-	[ 15,  16)  317   63.4%   98.4%  ######
-	[ 16,  17)    7    1.4%   99.8%  
-	[ 17, inf)    1    0.2%  100.0%  
-Benchmark__100_chunk____10B-2	    1000	  10896191 ns/op	   0.18 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 8  Max: 13  Avg: 10.39
-	------------------------------------------------------------
-	[  8,   9)    10    1.0%    1.0%  
-	[  9,  10)   113   11.3%   12.3%  #
-	[ 10,  11)   387   38.7%   51.0%  ####
-	[ 11,  12)   458   45.8%   96.8%  #####
-	[ 12,  13)    31    3.1%   99.9%  
-	[ 13, inf)     1    0.1%  100.0%  
-Benchmark__100_chunk___100B	     500	  15641654 ns/op	   1.28 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 13  Max: 17  Avg: 15.17
-	------------------------------------------------------------
-	[ 13,  14)    1    0.2%    0.2%  
-	[ 14,  15)  106   21.2%   21.4%  ##
-	[ 15,  16)  208   41.6%   63.0%  ####
-	[ 16,  17)  177   35.4%   98.4%  ####
-	[ 17, inf)    8    1.6%  100.0%  
-Benchmark__100_chunk___100B-2	    1000	  11037083 ns/op	   1.81 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 8  Max: 13  Avg: 10.53
-	------------------------------------------------------------
-	[  8,   9)    21    2.1%    2.1%  
-	[  9,  10)   175   17.5%   19.6%  ##
-	[ 10,  11)   285   28.5%   48.1%  ###
-	[ 11,  12)   298   29.8%   77.9%  ###
-	[ 12,  13)   211   21.1%   99.0%  ##
-	[ 13, inf)    10    1.0%  100.0%  
-Benchmark__100_chunk____1KB	     500	  17686556 ns/op	  11.31 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 15  Max: 21  Avg: 17.16
-	------------------------------------------------------------
-	[ 15,  16)   30    6.0%    6.0%  #
-	[ 16,  17)  125   25.0%   31.0%  ###
-	[ 17,  18)  122   24.4%   55.4%  ##
-	[ 18,  19)  191   38.2%   93.6%  ####
-	[ 19,  20)   26    5.2%   98.8%  #
-	[ 20,  21)    4    0.8%   99.6%  
-	[ 21, inf)    2    0.4%  100.0%  
-Benchmark__100_chunk____1KB-2	    1000	  11974933 ns/op	  16.70 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 8  Max: 16  Avg: 11.48
-	------------------------------------------------------------
-	[  8,   9)     6    0.6%    0.6%  
-	[  9,  10)    87    8.7%    9.3%  #
-	[ 10,  11)   202   20.2%   29.5%  ##
-	[ 11,  12)   246   24.6%   54.1%  ##
-	[ 12,  13)   125   12.5%   66.6%  #
-	[ 13,  15)   332   33.2%   99.8%  ###
-	[ 15,  17)     2    0.2%  100.0%  
-	[ 17,  19)     0    0.0%  100.0%  
+	[  2,   3)  1760   88.0%   88.0%  #########
+	[  3,   4)    89    4.5%   92.5%  
+	[  4,   5)    29    1.5%   93.9%  
+	[  5,   6)     0    0.0%   93.9%  
+	[  6,   7)     6    0.3%   94.2%  
+	[  7,   9)    45    2.2%   96.5%  
+	[  9,  11)    29    1.5%   97.9%  
+	[ 11,  13)    42    2.1%  100.0%  
+	[ 13,  16)     0    0.0%  100.0%  
+	[ 16,  19)     0    0.0%  100.0%  
 	[ 19, inf)     0    0.0%  100.0%  
-Benchmark__100_chunk___10KB	     200	  38603079 ns/op	  51.81 MB/s
+Benchmark___10_chunk__100KB-2	    1000	   9469459 ns/op	 211.21 MB/s
 --- Histogram (unit: ms)
-	Count: 200  Min: 35  Max: 41  Avg: 38.10
+	Count: 1000  Min: 6  Max: 14  Avg: 8.96
 	------------------------------------------------------------
-	[ 35,  36)    5    2.5%    2.5%  
-	[ 36,  37)    4    2.0%    4.5%  
-	[ 37,  38)   21   10.5%   15.0%  #
-	[ 38,  39)  123   61.5%   76.5%  ######
-	[ 39,  40)   31   15.5%   92.0%  ##
-	[ 40,  41)   15    7.5%   99.5%  #
-	[ 41, inf)    1    0.5%  100.0%  
-Benchmark__100_chunk___10KB-2	     300	  21864340 ns/op	  91.47 MB/s
---- Histogram (unit: ms)
-	Count: 300  Min: 18  Max: 24  Avg: 21.35
-	------------------------------------------------------------
-	[ 18,  19)    6    2.0%    2.0%  
-	[ 19,  20)   12    4.0%    6.0%  
-	[ 20,  21)   36   12.0%   18.0%  #
-	[ 21,  22)   94   31.3%   49.3%  ###
-	[ 22,  23)  124   41.3%   90.7%  ####
-	[ 23,  24)   24    8.0%   98.7%  #
-	[ 24, inf)    4    1.3%  100.0%  
-Benchmark__100_chunk__100KB	      30	 218748547 ns/op	  91.43 MB/s
---- Histogram (unit: ms)
-	Count: 30  Min: 214  Max: 225  Avg: 218.23
-	------------------------------------------------------------
-	[214, 215)   4   13.3%   13.3%  #
-	[215, 216)   4   13.3%   26.7%  #
-	[216, 217)   3   10.0%   36.7%  #
-	[217, 218)   3   10.0%   46.7%  #
-	[218, 219)   3   10.0%   56.7%  #
-	[219, 221)   5   16.7%   73.3%  ##
-	[221, 223)   4   13.3%   86.7%  #
-	[223, 226)   4   13.3%  100.0%  #
-	[226, 229)   0    0.0%  100.0%  
-	[229, 233)   0    0.0%  100.0%  
-	[233, 237)   0    0.0%  100.0%  
-	[237, inf)   0    0.0%  100.0%  
-Benchmark__100_chunk__100KB-2	      50	 113819574 ns/op	 175.72 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 108  Max: 118  Avg: 113.30
-	------------------------------------------------------------
-	[108, 109)   1    2.0%    2.0%  
-	[109, 110)   2    4.0%    6.0%  
-	[110, 111)   1    2.0%    8.0%  
-	[111, 112)   9   18.0%   26.0%  ##
-	[112, 113)   8   16.0%   42.0%  ##
-	[113, 115)  10   20.0%   62.0%  ##
-	[115, 117)  16   32.0%   94.0%  ###
-	[117, 119)   3    6.0%  100.0%  #
-	[119, 122)   0    0.0%  100.0%  
-	[122, 125)   0    0.0%  100.0%  
-	[125, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk_____1B	      50	 129084503 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 123  Max: 135  Avg: 128.56
-	------------------------------------------------------------
-	[123, 124)   1    2.0%    2.0%  
-	[124, 125)   0    0.0%    2.0%  
-	[125, 126)   1    2.0%    4.0%  
-	[126, 127)   0    0.0%    4.0%  
-	[127, 128)   9   18.0%   22.0%  ##
-	[128, 130)  29   58.0%   80.0%  ######
-	[130, 132)   6   12.0%   92.0%  #
-	[132, 135)   3    6.0%   98.0%  #
-	[135, 138)   1    2.0%  100.0%  
-	[138, 142)   0    0.0%  100.0%  
-	[142, 147)   0    0.0%  100.0%  
-	[147, 153)   0    0.0%  100.0%  
-	[153, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk_____1B-2	     100	  85455855 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 78  Max: 99  Avg: 84.98
-	------------------------------------------------------------
-	[ 78,  79)    5    5.0%    5.0%  #
-	[ 79,  80)    3    3.0%    8.0%  
-	[ 80,  81)    8    8.0%   16.0%  #
-	[ 81,  82)   10   10.0%   26.0%  #
-	[ 82,  84)   12   12.0%   38.0%  #
-	[ 84,  86)   19   19.0%   57.0%  ##
-	[ 86,  89)   19   19.0%   76.0%  ##
-	[ 89,  93)   21   21.0%   97.0%  ##
-	[ 93,  98)    1    1.0%   98.0%  
-	[ 98, 104)    2    2.0%  100.0%  
-	[104, 111)    0    0.0%  100.0%  
-	[111, 120)    0    0.0%  100.0%  
-	[120, 131)    0    0.0%  100.0%  
-	[131, 144)    0    0.0%  100.0%  
-	[144, 161)    0    0.0%  100.0%  
-	[161, 181)    0    0.0%  100.0%  
-	[181, inf)    0    0.0%  100.0%  
-Benchmark___1K_chunk____10B	      50	 132496755 ns/op	   0.15 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 126  Max: 141  Avg: 131.96
-	------------------------------------------------------------
-	[126, 127)   1    2.0%    2.0%  
-	[127, 128)   0    0.0%    2.0%  
-	[128, 129)   1    2.0%    4.0%  
-	[129, 130)   3    6.0%   10.0%  #
-	[130, 132)  21   42.0%   52.0%  ####
-	[132, 134)  13   26.0%   78.0%  ###
-	[134, 136)   5   10.0%   88.0%  #
-	[136, 139)   3    6.0%   94.0%  #
-	[139, 143)   3    6.0%  100.0%  #
-	[143, 148)   0    0.0%  100.0%  
-	[148, 154)   0    0.0%  100.0%  
-	[154, 161)   0    0.0%  100.0%  
-	[161, 169)   0    0.0%  100.0%  
-	[169, 179)   0    0.0%  100.0%  
-	[179, 191)   0    0.0%  100.0%  
-	[191, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk____10B-2	     100	  84457521 ns/op	   0.24 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 76  Max: 99  Avg: 83.95
-	------------------------------------------------------------
-	[ 76,  77)    1    1.0%    1.0%  
-	[ 77,  78)    3    3.0%    4.0%  
-	[ 78,  79)    6    6.0%   10.0%  #
-	[ 79,  80)    6    6.0%   16.0%  #
-	[ 80,  82)   11   11.0%   27.0%  #
-	[ 82,  84)   23   23.0%   50.0%  ##
-	[ 84,  87)   28   28.0%   78.0%  ###
-	[ 87,  91)   13   13.0%   91.0%  #
-	[ 91,  96)    8    8.0%   99.0%  #
-	[ 96, 102)    1    1.0%  100.0%  
-	[102, 110)    0    0.0%  100.0%  
-	[110, 119)    0    0.0%  100.0%  
-	[119, 131)    0    0.0%  100.0%  
-	[131, 146)    0    0.0%  100.0%  
-	[146, 164)    0    0.0%  100.0%  
-	[164, 186)    0    0.0%  100.0%  
-	[186, inf)    0    0.0%  100.0%  
-Benchmark___1K_chunk___100B	      50	 134022599 ns/op	   1.49 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 127  Max: 138  Avg: 133.44
-	------------------------------------------------------------
-	[127, 128)   1    2.0%    2.0%  
-	[128, 129)   0    0.0%    2.0%  
-	[129, 130)   0    0.0%    2.0%  
-	[130, 131)   1    2.0%    4.0%  
-	[131, 132)   3    6.0%   10.0%  #
-	[132, 134)  27   54.0%   64.0%  #####
-	[134, 136)  11   22.0%   86.0%  ##
-	[136, 139)   7   14.0%  100.0%  #
-	[139, 142)   0    0.0%  100.0%  
-	[142, 146)   0    0.0%  100.0%  
-	[146, 150)   0    0.0%  100.0%  
-	[150, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk___100B-2	     100	  85330166 ns/op	   2.34 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 76  Max: 96  Avg: 84.86
-	------------------------------------------------------------
-	[ 76,  77)    1    1.0%    1.0%  
-	[ 77,  78)    2    2.0%    3.0%  
-	[ 78,  79)    9    9.0%   12.0%  #
-	[ 79,  80)    5    5.0%   17.0%  #
-	[ 80,  82)    8    8.0%   25.0%  #
-	[ 82,  84)   10   10.0%   35.0%  #
-	[ 84,  87)   29   29.0%   64.0%  ###
-	[ 87,  91)   25   25.0%   89.0%  ###
-	[ 91,  95)    9    9.0%   98.0%  #
-	[ 95, 101)    2    2.0%  100.0%  
-	[101, 108)    0    0.0%  100.0%  
-	[108, 116)    0    0.0%  100.0%  
-	[116, 126)    0    0.0%  100.0%  
-	[126, 139)    0    0.0%  100.0%  
-	[139, 155)    0    0.0%  100.0%  
-	[155, 174)    0    0.0%  100.0%  
-	[174, inf)    0    0.0%  100.0%  
-Benchmark___1K_chunk____1KB	      50	 155794224 ns/op	  12.84 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 148  Max: 164  Avg: 155.34
-	------------------------------------------------------------
-	[148, 149)   1    2.0%    2.0%  
-	[149, 150)   0    0.0%    2.0%  
-	[150, 151)   0    0.0%    2.0%  
-	[151, 152)   3    6.0%    8.0%  #
-	[152, 154)   4    8.0%   16.0%  #
-	[154, 156)  20   40.0%   56.0%  ####
-	[156, 159)  17   34.0%   90.0%  ###
-	[159, 162)   3    6.0%   96.0%  #
-	[162, 166)   2    4.0%  100.0%  
-	[166, 171)   0    0.0%  100.0%  
-	[171, 177)   0    0.0%  100.0%  
-	[177, 184)   0    0.0%  100.0%  
-	[184, 193)   0    0.0%  100.0%  
-	[193, 204)   0    0.0%  100.0%  
-	[204, 217)   0    0.0%  100.0%  
-	[217, 233)   0    0.0%  100.0%  
-	[233, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk____1KB-2	     100	  95134335 ns/op	  21.02 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 81  Max: 105  Avg: 94.59
-	------------------------------------------------------------
-	[ 81,  82)    1    1.0%    1.0%  
-	[ 82,  83)    1    1.0%    2.0%  
-	[ 83,  84)    0    0.0%    2.0%  
-	[ 84,  85)    1    1.0%    3.0%  
-	[ 85,  87)    3    3.0%    6.0%  
-	[ 87,  89)   10   10.0%   16.0%  #
-	[ 89,  92)    6    6.0%   22.0%  #
-	[ 92,  96)   31   31.0%   53.0%  ###
-	[ 96, 101)   39   39.0%   92.0%  ####
-	[101, 107)    8    8.0%  100.0%  #
-	[107, 115)    0    0.0%  100.0%  
-	[115, 125)    0    0.0%  100.0%  
-	[125, 137)    0    0.0%  100.0%  
-	[137, 152)    0    0.0%  100.0%  
-	[152, 171)    0    0.0%  100.0%  
-	[171, 195)    0    0.0%  100.0%  
-	[195, inf)    0    0.0%  100.0%  
-Benchmark___1K_chunk___10KB	      20	 340093645 ns/op	  58.81 MB/s
---- Histogram (unit: ms)
-	Count: 20  Min: 331  Max: 352  Avg: 339.65
-	------------------------------------------------------------
-	[331, 332)   1    5.0%    5.0%  #
-	[332, 333)   2   10.0%   15.0%  #
-	[333, 334)   0    0.0%   15.0%  
-	[334, 335)   0    0.0%   15.0%  
-	[335, 337)   2   10.0%   25.0%  #
-	[337, 339)   4   20.0%   45.0%  ##
-	[339, 342)   5   25.0%   70.0%  ###
-	[342, 346)   3   15.0%   85.0%  ##
-	[346, 351)   2   10.0%   95.0%  #
-	[351, 357)   1    5.0%  100.0%  #
-	[357, 364)   0    0.0%  100.0%  
-	[364, 373)   0    0.0%  100.0%  
-	[373, 384)   0    0.0%  100.0%  
-	[384, 397)   0    0.0%  100.0%  
-	[397, 414)   0    0.0%  100.0%  
-	[414, 434)   0    0.0%  100.0%  
-	[434, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk___10KB-2	      50	 180545176 ns/op	 110.78 MB/s
---- Histogram (unit: ms)
-	Count: 50  Min: 171  Max: 190  Avg: 180.06
-	------------------------------------------------------------
-	[171, 172)   1    2.0%    2.0%  
-	[172, 173)   0    0.0%    2.0%  
-	[173, 174)   1    2.0%    4.0%  
-	[174, 175)   0    0.0%    4.0%  
-	[175, 177)   7   14.0%   18.0%  #
-	[177, 179)   8   16.0%   34.0%  ##
-	[179, 182)  14   28.0%   62.0%  ###
-	[182, 185)  16   32.0%   94.0%  ###
-	[185, 189)   2    4.0%   98.0%  
-	[189, 194)   1    2.0%  100.0%  
-	[194, 201)   0    0.0%  100.0%  
-	[201, 209)   0    0.0%  100.0%  
-	[209, 219)   0    0.0%  100.0%  
-	[219, 231)   0    0.0%  100.0%  
-	[231, 246)   0    0.0%  100.0%  
-	[246, 264)   0    0.0%  100.0%  
-	[264, inf)   0    0.0%  100.0%  
-Benchmark___1K_chunk__100KB	       3	2241353636 ns/op	  89.23 MB/s
---- Histogram (unit: s)
-	Count: 3  Min: 2  Max: 2  Avg: 2.00
-	------------------------------------------------------------
-	[  2, inf)  3  100.0%  100.0%  ##########
-Benchmark___1K_chunk__100KB-2	       5	1152111781 ns/op	 173.59 MB/s
---- Histogram (unit: s)
-	Count: 5  Min: 1  Max: 1  Avg: 1.00
-	------------------------------------------------------------
-	[  1, inf)  5  100.0%  100.0%  ##########
+	[  6,   7)     1    0.1%    0.1%  
+	[  7,   8)   626   62.6%   62.7%  ######
+	[  8,   9)    52    5.2%   67.9%  #
+	[  9,  10)    13    1.3%   69.2%  
+	[ 10,  11)     2    0.2%   69.4%  
+	[ 11,  13)    58    5.8%   75.2%  #
+	[ 13,  15)   248   24.8%  100.0%  ##
+	[ 15,  17)     0    0.0%  100.0%  
+	[ 17, inf)     0    0.0%  100.0%  
 
-Benchmark__per_chunk____1B	   50000	    124707 ns/op	   0.02 MB/s
-Benchmark__per_chunk____1B-2	  100000	     78017 ns/op	   0.03 MB/s
-Benchmark__per_chunk___10B	   50000	    122584 ns/op	   0.16 MB/s
-Benchmark__per_chunk___10B-2	  100000	     75094 ns/op	   0.27 MB/s
-Benchmark__per_chunk__100B	   50000	    124183 ns/op	   1.61 MB/s
-Benchmark__per_chunk__100B-2	  100000	     74955 ns/op	   2.67 MB/s
-Benchmark__per_chunk___1KB	   50000	    144432 ns/op	  13.85 MB/s
-Benchmark__per_chunk___1KB-2	  100000	     79305 ns/op	  25.22 MB/s
-Benchmark__per_chunk__10KB	   20000	    314733 ns/op	  63.55 MB/s
-Benchmark__per_chunk__10KB-2	   50000	    163532 ns/op	 122.30 MB/s
-Benchmark__per_chunk_100KB	    3000	   2015176 ns/op	  99.25 MB/s
-Benchmark__per_chunk_100KB-2	   10000	   1048505 ns/op	 190.75 MB/s
+Benchmark__100_chunk_____1B-2	     500	  12427739 ns/op	   0.02 MB/s
+--- Histogram (unit: ms)
+	Count: 500  Min: 11  Max: 14  Avg: 11.96
+	------------------------------------------------------------
+	[ 11,  12)  124   24.8%   24.8%  ##
+	[ 12,  13)  279   55.8%   80.6%  ######
+	[ 13,  14)   88   17.6%   98.2%  ##
+	[ 14, inf)    9    1.8%  100.0%  
+Benchmark__100_chunk____10B-2	     500	  12206256 ns/op	   0.16 MB/s
+--- Histogram (unit: ms)
+	Count: 500  Min: 11  Max: 14  Avg: 11.73
+	------------------------------------------------------------
+	[ 11,  12)  189   37.8%   37.8%  ####
+	[ 12,  13)  261   52.2%   90.0%  #####
+	[ 13,  14)   48    9.6%   99.6%  #
+	[ 14, inf)    2    0.4%  100.0%  
+Benchmark__100_chunk___100B-2	     500	  12241029 ns/op	   1.63 MB/s
+--- Histogram (unit: ms)
+	Count: 500  Min: 11  Max: 14  Avg: 11.75
+	------------------------------------------------------------
+	[ 11,  12)  184   36.8%   36.8%  ####
+	[ 12,  13)  265   53.0%   89.8%  #####
+	[ 13,  14)   45    9.0%   98.8%  #
+	[ 14, inf)    6    1.2%  100.0%  
+Benchmark__100_chunk____1KB-2	     500	  13043623 ns/op	  15.33 MB/s
+--- Histogram (unit: ms)
+	Count: 500  Min: 11  Max: 33  Avg: 12.53
+	------------------------------------------------------------
+	[ 11,  12)    3    0.6%    0.6%  
+	[ 12,  13)  284   56.8%   57.4%  ######
+	[ 13,  14)  176   35.2%   92.6%  ####
+	[ 14,  15)   35    7.0%   99.6%  #
+	[ 15,  17)    1    0.2%   99.8%  
+	[ 17,  19)    0    0.0%   99.8%  
+	[ 19,  22)    0    0.0%   99.8%  
+	[ 22,  26)    0    0.0%   99.8%  
+	[ 26,  31)    0    0.0%   99.8%  
+	[ 31,  37)    1    0.2%  100.0%  
+	[ 37,  44)    0    0.0%  100.0%  
+	[ 44,  53)    0    0.0%  100.0%  
+	[ 53,  64)    0    0.0%  100.0%  
+	[ 64,  78)    0    0.0%  100.0%  
+	[ 78,  95)    0    0.0%  100.0%  
+	[ 95, 116)    0    0.0%  100.0%  
+	[116, inf)    0    0.0%  100.0%  
+Benchmark__100_chunk___10KB-2	     500	  18162047 ns/op	 110.12 MB/s
+--- Histogram (unit: ms)
+	Count: 500  Min: 16  Max: 21  Avg: 17.64
+	------------------------------------------------------------
+	[ 16,  17)   79   15.8%   15.8%  ##
+	[ 17,  18)  153   30.6%   46.4%  ###
+	[ 18,  19)  165   33.0%   79.4%  ###
+	[ 19,  20)   78   15.6%   95.0%  ##
+	[ 20,  21)   24    4.8%   99.8%  
+	[ 21, inf)    1    0.2%  100.0%  
+Benchmark__100_chunk__100KB-2	     100	  68538838 ns/op	 291.81 MB/s
+--- Histogram (unit: ms)
+	Count: 100  Min: 65  Max: 71  Avg: 68.06
+	------------------------------------------------------------
+	[ 65,  66)    6    6.0%    6.0%  #
+	[ 66,  67)    7    7.0%   13.0%  #
+	[ 67,  68)   15   15.0%   28.0%  ##
+	[ 68,  69)   35   35.0%   63.0%  ####
+	[ 69,  70)   26   26.0%   89.0%  ###
+	[ 70,  71)    6    6.0%   95.0%  #
+	[ 71, inf)    5    5.0%  100.0%  #
+Benchmark___1K_chunk_____1B-2	     100	 108491530 ns/op	   0.02 MB/s
+--- Histogram (unit: ms)
+	Count: 100  Min: 98  Max: 122  Avg: 107.97
+	------------------------------------------------------------
+	[ 98,  99)    1    1.0%    1.0%  
+	[ 99, 100)    1    1.0%    2.0%  
+	[100, 101)    2    2.0%    4.0%  
+	[101, 102)    4    4.0%    8.0%  
+	[102, 104)    6    6.0%   14.0%  #
+	[104, 106)   12   12.0%   26.0%  #
+	[106, 109)   28   28.0%   54.0%  ###
+	[109, 113)   32   32.0%   86.0%  ###
+	[113, 118)   13   13.0%   99.0%  #
+	[118, 124)    1    1.0%  100.0%  
+	[124, 132)    0    0.0%  100.0%  
+	[132, 142)    0    0.0%  100.0%  
+	[142, 154)    0    0.0%  100.0%  
+	[154, 169)    0    0.0%  100.0%  
+	[169, 188)    0    0.0%  100.0%  
+	[188, 212)    0    0.0%  100.0%  
+	[212, inf)    0    0.0%  100.0%  
+Benchmark___1K_chunk____10B-2	     100	 107576447 ns/op	   0.19 MB/s
+--- Histogram (unit: ms)
+	Count: 100  Min: 97  Max: 119  Avg: 107.04
+	------------------------------------------------------------
+	[ 97,  98)    1    1.0%    1.0%  
+	[ 98,  99)    1    1.0%    2.0%  
+	[ 99, 100)    4    4.0%    6.0%  
+	[100, 101)    1    1.0%    7.0%  
+	[101, 103)    6    6.0%   13.0%  #
+	[103, 105)   15   15.0%   28.0%  ##
+	[105, 108)   28   28.0%   56.0%  ###
+	[108, 112)   29   29.0%   85.0%  ###
+	[112, 117)   13   13.0%   98.0%  #
+	[117, 123)    2    2.0%  100.0%  
+	[123, 130)    0    0.0%  100.0%  
+	[130, 139)    0    0.0%  100.0%  
+	[139, 150)    0    0.0%  100.0%  
+	[150, 164)    0    0.0%  100.0%  
+	[164, 181)    0    0.0%  100.0%  
+	[181, 202)    0    0.0%  100.0%  
+	[202, inf)    0    0.0%  100.0%  
+Benchmark___1K_chunk___100B-2	     100	 108458019 ns/op	   1.84 MB/s
+--- Histogram (unit: ms)
+	Count: 100  Min: 98  Max: 117  Avg: 107.93
+	------------------------------------------------------------
+	[ 98,  99)    1    1.0%    1.0%  
+	[ 99, 100)    1    1.0%    2.0%  
+	[100, 101)    2    2.0%    4.0%  
+	[101, 102)    3    3.0%    7.0%  
+	[102, 104)    9    9.0%   16.0%  #
+	[104, 106)    8    8.0%   24.0%  #
+	[106, 109)   28   28.0%   52.0%  ###
+	[109, 112)   34   34.0%   86.0%  ###
+	[112, 116)   12   12.0%   98.0%  #
+	[116, 121)    2    2.0%  100.0%  
+	[121, 128)    0    0.0%  100.0%  
+	[128, 136)    0    0.0%  100.0%  
+	[136, 146)    0    0.0%  100.0%  
+	[146, 158)    0    0.0%  100.0%  
+	[158, 173)    0    0.0%  100.0%  
+	[173, 191)    0    0.0%  100.0%  
+	[191, inf)    0    0.0%  100.0%  
+Benchmark___1K_chunk____1KB-2	     100	 118334262 ns/op	  16.90 MB/s
+--- Histogram (unit: ms)
+	Count: 100  Min: 105  Max: 129  Avg: 117.82
+	------------------------------------------------------------
+	[105, 106)    2    2.0%    2.0%  
+	[106, 107)    3    3.0%    5.0%  
+	[107, 108)    3    3.0%    8.0%  
+	[108, 109)    3    3.0%   11.0%  
+	[109, 111)    3    3.0%   14.0%  
+	[111, 113)    2    2.0%   16.0%  
+	[113, 116)   10   10.0%   26.0%  #
+	[116, 120)   25   25.0%   51.0%  ###
+	[120, 125)   43   43.0%   94.0%  ####
+	[125, 131)    6    6.0%  100.0%  #
+	[131, 139)    0    0.0%  100.0%  
+	[139, 149)    0    0.0%  100.0%  
+	[149, 161)    0    0.0%  100.0%  
+	[161, 176)    0    0.0%  100.0%  
+	[176, 195)    0    0.0%  100.0%  
+	[195, 219)    0    0.0%  100.0%  
+	[219, inf)    0    0.0%  100.0%  
+Benchmark___1K_chunk___10KB-2	      50	 150361259 ns/op	 133.01 MB/s
+--- Histogram (unit: ms)
+	Count: 50  Min: 144  Max: 156  Avg: 149.92
+	------------------------------------------------------------
+	[144, 145)   3    6.0%    6.0%  #
+	[145, 146)   3    6.0%   12.0%  #
+	[146, 147)   4    8.0%   20.0%  #
+	[147, 148)   4    8.0%   28.0%  #
+	[148, 149)   4    8.0%   36.0%  #
+	[149, 151)   8   16.0%   52.0%  ##
+	[151, 153)  11   22.0%   74.0%  ##
+	[153, 156)  12   24.0%   98.0%  ##
+	[156, 159)   1    2.0%  100.0%  
+	[159, 163)   0    0.0%  100.0%  
+	[163, 168)   0    0.0%  100.0%  
+	[168, 174)   0    0.0%  100.0%  
+	[174, inf)   0    0.0%  100.0%  
+Benchmark___1K_chunk__100KB-2	      10	 691013740 ns/op	 289.43 MB/s
+--- Histogram (unit: ms)
+	Count: 10  Min: 683  Max: 699  Avg: 690.40
+	------------------------------------------------------------
+	[683, 684)   1   10.0%   10.0%  #
+	[684, 685)   0    0.0%   10.0%  
+	[685, 686)   1   10.0%   20.0%  #
+	[686, 687)   0    0.0%   20.0%  
+	[687, 689)   2   20.0%   40.0%  ##
+	[689, 691)   1   10.0%   50.0%  #
+	[691, 694)   3   30.0%   80.0%  ###
+	[694, 697)   1   10.0%   90.0%  #
+	[697, 701)   1   10.0%  100.0%  #
+	[701, 706)   0    0.0%  100.0%  
+	[706, 712)   0    0.0%  100.0%  
+	[712, 719)   0    0.0%  100.0%  
+	[719, 728)   0    0.0%  100.0%  
+	[728, 739)   0    0.0%  100.0%  
+	[739, 752)   0    0.0%  100.0%  
+	[752, 768)   0    0.0%  100.0%  
+	[768, inf)   0    0.0%  100.0%  
 
-Benchmark___10B_mux__100_chunks___10B	     500	  16408021 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 7  Max: 18  Avg: 15.99
+Benchmark__per_chunk____1B-2	  100000	    113488 ns/op	   0.02 MB/s
+Benchmark__per_chunk___10B-2	  100000	    110432 ns/op	   0.18 MB/s
+Benchmark__per_chunk__100B-2	  100000	    109446 ns/op	   1.83 MB/s
+Benchmark__per_chunk___1KB-2	  100000	    118905 ns/op	  16.82 MB/s
+Benchmark__per_chunk__10KB-2	   50000	    165005 ns/op	 121.21 MB/s
+Benchmark__per_chunk_100KB-2	   10000	    672988 ns/op	 297.18 MB/s
+
+Benchmark___10B_mux__100_chunks___10B-2	    3000	   2096423 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 853  Max: 7497  Avg: 2095.56
 	------------------------------------------------------------
-	[  7,   8)    1    0.2%    0.2%  
-	[  8,   9)    2    0.4%    0.6%  
-	[  9,  10)    2    0.4%    1.0%  
-	[ 10,  11)    0    0.0%    1.0%  
-	[ 11,  12)    1    0.2%    1.2%  
-	[ 12,  14)    8    1.6%    2.8%  
-	[ 14,  16)   34    6.8%    9.6%  #
-	[ 16,  19)  452   90.4%  100.0%  #########
-	[ 19,  22)    0    0.0%  100.0%  
-	[ 22,  26)    0    0.0%  100.0%  
-	[ 26,  30)    0    0.0%  100.0%  
-	[ 30, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks___10B-2	    2000	   3878477 ns/op	   0.01 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 9  Avg: 3.39
+	[  853,   854)     1    0.0%    0.0%  
+	[  854,   855)     0    0.0%    0.0%  
+	[  855,   858)     0    0.0%    0.0%  
+	[  858,   863)     0    0.0%    0.0%  
+	[  863,   873)     0    0.0%    0.0%  
+	[  873,   891)     0    0.0%    0.0%  
+	[  891,   924)     3    0.1%    0.1%  
+	[  924,   984)    24    0.8%    0.9%  
+	[  984,  1093)   119    4.0%    4.9%  
+	[ 1093,  1289)   580   19.3%   24.2%  ##
+	[ 1289,  1642)  1010   33.7%   57.9%  ###
+	[ 1642,  2277)   488   16.3%   74.2%  ##
+	[ 2277,  3419)   271    9.0%   83.2%  #
+	[ 3419,  5473)   423   14.1%   97.3%  #
+	[ 5473,  9167)    81    2.7%  100.0%  
+	[ 9167, 15811)     0    0.0%  100.0%  
+	[15811,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux__100_chunks__100B-2	    3000	   2238813 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 808  Max: 9123  Avg: 2237.91
 	------------------------------------------------------------
-	[  1,   2)   122    6.1%    6.1%  #
-	[  2,   3)   599   30.0%   36.1%  ###
-	[  3,   4)   439   22.0%   58.0%  ##
-	[  4,   5)   389   19.5%   77.5%  ##
-	[  5,   6)   235   11.8%   89.2%  #
-	[  6,   8)   194    9.7%   98.9%  #
-	[  8,  10)    22    1.1%  100.0%  
-	[ 10,  12)     0    0.0%  100.0%  
-	[ 12, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks__100B	     500	  17052264 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 7  Max: 21  Avg: 16.57
+	[  808,   809)     1    0.0%    0.0%  
+	[  809,   810)     0    0.0%    0.0%  
+	[  810,   813)     0    0.0%    0.0%  
+	[  813,   819)     0    0.0%    0.0%  
+	[  819,   830)     0    0.0%    0.0%  
+	[  830,   850)     0    0.0%    0.0%  
+	[  850,   886)     5    0.2%    0.2%  
+	[  886,   953)     9    0.3%    0.5%  
+	[  953,  1076)    67    2.2%    2.7%  
+	[ 1076,  1300)   493   16.4%   19.2%  ##
+	[ 1300,  1710)  1176   39.2%   58.4%  ####
+	[ 1710,  2459)   507   16.9%   75.3%  ##
+	[ 2459,  3826)   206    6.9%   82.1%  #
+	[ 3826,  6321)   467   15.6%   97.7%  ##
+	[ 6321, 10876)    69    2.3%  100.0%  
+	[10876, 19190)     0    0.0%  100.0%  
+	[19190,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux__100_chunks___1KB-2	    3000	   2578794 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 856  Max: 10981  Avg: 2577.84
 	------------------------------------------------------------
-	[  7,   8)    1    0.2%    0.2%  
-	[  8,   9)    0    0.0%    0.2%  
-	[  9,  10)    0    0.0%    0.2%  
-	[ 10,  11)    1    0.2%    0.4%  
-	[ 11,  13)    1    0.2%    0.6%  
-	[ 13,  15)   53   10.6%   11.2%  #
-	[ 15,  17)  152   30.4%   41.6%  ###
-	[ 17,  20)  281   56.2%   97.8%  ######
-	[ 20,  24)   11    2.2%  100.0%  
-	[ 24,  28)    0    0.0%  100.0%  
-	[ 28,  33)    0    0.0%  100.0%  
-	[ 33,  39)    0    0.0%  100.0%  
-	[ 39,  47)    0    0.0%  100.0%  
-	[ 47,  56)    0    0.0%  100.0%  
-	[ 56, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks__100B-2	    2000	   4022209 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 12  Avg: 3.53
+	[  856,   857)     1    0.0%    0.0%  
+	[  857,   858)     0    0.0%    0.0%  
+	[  858,   861)     0    0.0%    0.0%  
+	[  861,   867)     0    0.0%    0.0%  
+	[  867,   878)     0    0.0%    0.0%  
+	[  878,   899)     1    0.0%    0.1%  
+	[  899,   939)     1    0.0%    0.1%  
+	[  939,  1012)    13    0.4%    0.5%  
+	[ 1012,  1148)    69    2.3%    2.8%  
+	[ 1148,  1401)   392   13.1%   15.9%  #
+	[ 1401,  1869)  1141   38.0%   53.9%  ####
+	[ 1869,  2734)   603   20.1%   74.0%  ##
+	[ 2734,  4334)   228    7.6%   81.6%  #
+	[ 4334,  7294)   466   15.5%   97.2%  ##
+	[ 7294, 12768)    85    2.8%  100.0%  
+	[12768, 22893)     0    0.0%  100.0%  
+	[22893,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux__100_chunks__10KB-2	    2000	   5713209 ns/op	   0.00 MB/s
+--- Histogram (unit: µs)
+	Count: 2000  Min: 881  Max: 19620  Avg: 5711.99
 	------------------------------------------------------------
-	[  1,   2)    99    5.0%    5.0%  
-	[  2,   3)   733   36.6%   41.6%  ####
-	[  3,   4)   384   19.2%   60.8%  ##
-	[  4,   5)   296   14.8%   75.6%  #
-	[  5,   6)   169    8.5%   84.1%  #
-	[  6,   8)   207   10.4%   94.4%  #
-	[  8,  10)    94    4.7%   99.1%  
-	[ 10,  13)    18    0.9%  100.0%  
-	[ 13,  16)     0    0.0%  100.0%  
-	[ 16,  20)     0    0.0%  100.0%  
-	[ 20,  24)     0    0.0%  100.0%  
-	[ 24, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks___1KB	     500	  19001451 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 7  Max: 23  Avg: 18.44
+	[  881,   882)     1    0.1%    0.1%  
+	[  882,   883)     0    0.0%    0.1%  
+	[  883,   886)     0    0.0%    0.1%  
+	[  886,   893)     0    0.0%    0.1%  
+	[  893,   906)     0    0.0%    0.1%  
+	[  906,   932)     2    0.1%    0.2%  
+	[  932,   983)     7    0.4%    0.5%  
+	[  983,  1081)    40    2.0%    2.5%  
+	[ 1081,  1271)   128    6.4%    8.9%  #
+	[ 1271,  1637)   217   10.9%   19.8%  #
+	[ 1637,  2342)   197    9.9%   29.6%  #
+	[ 2342,  3701)   393   19.7%   49.2%  ##
+	[ 3701,  6320)   314   15.7%   65.0%  ##
+	[ 6320, 11367)   391   19.6%   84.5%  ##
+	[11367, 21092)   310   15.5%  100.0%  ##
+	[21092, 39830)     0    0.0%  100.0%  
+	[39830,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux___1K_chunks___10B-2	    3000	   2563937 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 963  Max: 42356  Avg: 2562.97
 	------------------------------------------------------------
-	[  7,   8)    1    0.2%    0.2%  
-	[  8,   9)    0    0.0%    0.2%  
-	[  9,  10)    0    0.0%    0.2%  
-	[ 10,  11)    0    0.0%    0.2%  
-	[ 11,  13)    2    0.4%    0.6%  
-	[ 13,  15)    3    0.6%    1.2%  
-	[ 15,  18)  244   48.8%   50.0%  #####
-	[ 18,  21)   64   12.8%   62.8%  #
-	[ 21,  25)  186   37.2%  100.0%  ####
-	[ 25,  30)    0    0.0%  100.0%  
-	[ 30,  36)    0    0.0%  100.0%  
-	[ 36,  43)    0    0.0%  100.0%  
-	[ 43,  52)    0    0.0%  100.0%  
-	[ 52,  63)    0    0.0%  100.0%  
-	[ 63,  76)    0    0.0%  100.0%  
-	[ 76,  92)    0    0.0%  100.0%  
-	[ 92, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks___1KB-2	    2000	   4690985 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 14  Avg: 4.20
+	[  963,   964)     2    0.1%    0.1%  
+	[  964,   966)     1    0.0%    0.1%  
+	[  966,   970)     2    0.1%    0.2%  
+	[  970,   978)     0    0.0%    0.2%  
+	[  978,   995)     2    0.1%    0.2%  
+	[  995,  1029)     8    0.3%    0.5%  
+	[ 1029,  1099)    61    2.0%    2.5%  
+	[ 1099,  1241)   302   10.1%   12.6%  #
+	[ 1241,  1530)  1053   35.1%   47.7%  ####
+	[ 1530,  2119)  1182   39.4%   87.1%  ####
+	[ 2119,  3315)   121    4.0%   91.1%  
+	[ 3315,  5745)    71    2.4%   93.5%  
+	[ 5745, 10682)   116    3.9%   97.4%  
+	[10682, 20712)    21    0.7%   98.1%  
+	[20712, 41088)    54    1.8%   99.9%  
+	[41088, 82480)     4    0.1%  100.0%  
+	[82480,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux___1K_chunks__100B-2	    3000	   2657054 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 931  Max: 46417  Avg: 2656.13
 	------------------------------------------------------------
-	[  1,   2)    66    3.3%    3.3%  
-	[  2,   3)   547   27.4%   30.7%  ###
-	[  3,   4)   441   22.1%   52.7%  ##
-	[  4,   5)   267   13.4%   66.0%  #
-	[  5,   6)   228   11.4%   77.5%  #
-	[  6,   8)   213   10.7%   88.1%  #
-	[  8,  10)   118    5.9%   94.0%  #
-	[ 10,  13)    95    4.8%   98.8%  
-	[ 13,  16)    25    1.2%  100.0%  
-	[ 16,  20)     0    0.0%  100.0%  
-	[ 20,  25)     0    0.0%  100.0%  
-	[ 25,  31)     0    0.0%  100.0%  
-	[ 31,  38)     0    0.0%  100.0%  
-	[ 38, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks__10KB	     200	  39337476 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 200  Min: 31  Max: 43  Avg: 38.81
+	[  931,   932)     1    0.0%    0.0%  
+	[  932,   934)     0    0.0%    0.0%  
+	[  934,   938)     0    0.0%    0.0%  
+	[  938,   946)     0    0.0%    0.0%  
+	[  946,   963)     0    0.0%    0.0%  
+	[  963,   998)     7    0.2%    0.3%  
+	[  998,  1070)    40    1.3%    1.6%  
+	[ 1070,  1219)   247    8.2%    9.8%  #
+	[ 1219,  1523)  1090   36.3%   46.2%  ####
+	[ 1523,  2146)  1210   40.3%   86.5%  ####
+	[ 2146,  3420)   129    4.3%   90.8%  
+	[ 3420,  6024)    74    2.5%   93.3%  
+	[ 6024, 11348)   130    4.3%   97.6%  
+	[11348, 22232)    14    0.5%   98.1%  
+	[22232, 44483)    57    1.9%  100.0%  
+	[44483, 89969)     1    0.0%  100.0%  
+	[89969,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux___1K_chunks___1KB-2	    2000	   2880796 ns/op	   0.01 MB/s
+--- Histogram (unit: µs)
+	Count: 2000  Min: 996  Max: 48649  Avg: 2879.79
 	------------------------------------------------------------
-	[ 31,  32)    1    0.5%    0.5%  
-	[ 32,  33)    0    0.0%    0.5%  
-	[ 33,  34)    0    0.0%    0.5%  
-	[ 34,  35)   28   14.0%   14.5%  #
-	[ 35,  36)   18    9.0%   23.5%  #
-	[ 36,  38)   43   21.5%   45.0%  ##
-	[ 38,  40)    1    0.5%   45.5%  
-	[ 40,  43)   77   38.5%   84.0%  ####
-	[ 43,  46)   32   16.0%  100.0%  ##
-	[ 46,  50)    0    0.0%  100.0%  
-	[ 50,  55)    0    0.0%  100.0%  
-	[ 55,  61)    0    0.0%  100.0%  
-	[ 61, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux__100_chunks__10KB-2	     500	  12546220 ns/op	   0.00 MB/s
+	[  996,   997)     1    0.1%    0.1%  
+	[  997,   999)     0    0.0%    0.1%  
+	[  999,  1003)     0    0.0%    0.1%  
+	[ 1003,  1011)     0    0.0%    0.1%  
+	[ 1011,  1028)     0    0.0%    0.1%  
+	[ 1028,  1064)     0    0.0%    0.1%  
+	[ 1064,  1138)    17    0.9%    0.9%  
+	[ 1138,  1290)   126    6.3%    7.2%  #
+	[ 1290,  1602)   685   34.2%   41.5%  ###
+	[ 1602,  2242)   850   42.5%   84.0%  ####
+	[ 2242,  3556)   145    7.2%   91.2%  #
+	[ 3556,  6251)    42    2.1%   93.3%  
+	[ 6251, 11777)    84    4.2%   97.5%  
+	[11777, 23109)    10    0.5%   98.0%  
+	[23109, 46348)    37    1.9%   99.9%  
+	[46348, 94001)     3    0.2%  100.0%  
+	[94001,   inf)     0    0.0%  100.0%  
+Benchmark___10B_mux___1K_chunks__10KB-2	     300	  20013539 ns/op	   0.00 MB/s
 --- Histogram (unit: ms)
-	Count: 500  Min: 1  Max: 26  Avg: 12.06
+	Count: 300  Min: 1  Max: 68  Avg: 19.55
 	------------------------------------------------------------
-	[  1,   2)   12    2.4%    2.4%  
-	[  2,   3)   72   14.4%   16.8%  #
-	[  3,   4)   32    6.4%   23.2%  #
-	[  4,   5)   22    4.4%   27.6%  
-	[  5,   7)   32    6.4%   34.0%  #
-	[  7,   9)   26    5.2%   39.2%  #
-	[  9,  12)   39    7.8%   47.0%  #
-	[ 12,  16)   61   12.2%   59.2%  #
-	[ 16,  21)  105   21.0%   80.2%  ##
-	[ 21,  27)   99   19.8%  100.0%  ##
-	[ 27,  35)    0    0.0%  100.0%  
-	[ 35,  45)    0    0.0%  100.0%  
-	[ 45,  58)    0    0.0%  100.0%  
-	[ 58,  74)    0    0.0%  100.0%  
-	[ 74,  94)    0    0.0%  100.0%  
-	[ 94, 118)    0    0.0%  100.0%  
-	[118, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks___10B	     100	  90698047 ns/op	   0.00 MB/s
+	[  1,   2)   47   15.7%   15.7%  ##
+	[  2,   3)   20    6.7%   22.3%  #
+	[  3,   4)   17    5.7%   28.0%  #
+	[  4,   6)   11    3.7%   31.7%  
+	[  6,   9)   12    4.0%   35.7%  
+	[  9,  13)   22    7.3%   43.0%  #
+	[ 13,  18)   20    6.7%   49.7%  #
+	[ 18,  25)   34   11.3%   61.0%  #
+	[ 25,  34)   52   17.3%   78.3%  ##
+	[ 34,  46)   43   14.3%   92.7%  #
+	[ 46,  62)   21    7.0%   99.7%  #
+	[ 62,  83)    1    0.3%  100.0%  
+	[ 83, 111)    0    0.0%  100.0%  
+	[111, 149)    0    0.0%  100.0%  
+	[149, 199)    0    0.0%  100.0%  
+	[199, 265)    0    0.0%  100.0%  
+	[265, inf)    0    0.0%  100.0%  
+Benchmark___1KB_mux__100_chunks___10B-2	    3000	   2184759 ns/op	   0.92 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 818  Max: 14154  Avg: 2183.87
+	------------------------------------------------------------
+	[  818,   819)     1    0.0%    0.0%  
+	[  819,   820)     0    0.0%    0.0%  
+	[  820,   823)     0    0.0%    0.0%  
+	[  823,   829)     0    0.0%    0.0%  
+	[  829,   841)     1    0.0%    0.1%  
+	[  841,   864)     0    0.0%    0.1%  
+	[  864,   908)     3    0.1%    0.2%  
+	[  908,   992)    16    0.5%    0.7%  
+	[  992,  1150)   179    6.0%    6.7%  #
+	[ 1150,  1448)   869   29.0%   35.6%  ###
+	[ 1448,  2010)  1256   41.9%   77.5%  ####
+	[ 2010,  3069)   149    5.0%   82.5%  
+	[ 3069,  5064)   380   12.7%   95.1%  #
+	[ 5064,  8822)    91    3.0%   98.2%  
+	[ 8822, 15901)    55    1.8%  100.0%  
+	[15901, 29236)     0    0.0%  100.0%  
+	[29236,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux__100_chunks__100B-2	    3000	   2260787 ns/op	   0.88 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 919  Max: 16047  Avg: 2259.90
+	------------------------------------------------------------
+	[  919,   920)     1    0.0%    0.0%  
+	[  920,   921)     0    0.0%    0.0%  
+	[  921,   924)     0    0.0%    0.0%  
+	[  924,   930)     0    0.0%    0.0%  
+	[  930,   943)     1    0.0%    0.1%  
+	[  943,   967)     3    0.1%    0.2%  
+	[  967,  1013)    10    0.3%    0.5%  
+	[ 1013,  1102)    62    2.1%    2.6%  
+	[ 1102,  1271)   287    9.6%   12.1%  #
+	[ 1271,  1593)  1026   34.2%   46.3%  ###
+	[ 1593,  2204)   980   32.7%   79.0%  ###
+	[ 2204,  3365)    98    3.3%   82.3%  
+	[ 3365,  5572)   411   13.7%   96.0%  #
+	[ 5572,  9764)    80    2.7%   98.6%  
+	[ 9764, 17727)    41    1.4%  100.0%  
+	[17727, 32854)     0    0.0%  100.0%  
+	[32854,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux__100_chunks___1KB-2	    3000	   2484297 ns/op	   0.81 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 909  Max: 17797  Avg: 2483.36
+	------------------------------------------------------------
+	[  909,   910)     1    0.0%    0.0%  
+	[  910,   911)     0    0.0%    0.0%  
+	[  911,   914)     0    0.0%    0.0%  
+	[  914,   921)     0    0.0%    0.0%  
+	[  921,   934)     0    0.0%    0.0%  
+	[  934,   959)     2    0.1%    0.1%  
+	[  959,  1008)    17    0.6%    0.7%  
+	[ 1008,  1101)    42    1.4%    2.1%  
+	[ 1101,  1280)   219    7.3%    9.4%  #
+	[ 1280,  1623)   904   30.1%   39.5%  ###
+	[ 1623,  2281)  1155   38.5%   78.0%  ####
+	[ 2281,  3540)   131    4.4%   82.4%  
+	[ 3540,  5950)   396   13.2%   95.6%  #
+	[ 5950, 10562)    64    2.1%   97.7%  
+	[10562, 19387)    69    2.3%  100.0%  
+	[19387, 36275)     0    0.0%  100.0%  
+	[36275,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux__100_chunks__10KB-2	    1000	   5790870 ns/op	   0.35 MB/s
+--- Histogram (unit: µs)
+	Count: 1000  Min: 948  Max: 23009  Avg: 5789.90
+	------------------------------------------------------------
+	[  948,   949)     1    0.1%    0.1%  
+	[  949,   950)     0    0.0%    0.1%  
+	[  950,   953)     0    0.0%    0.1%  
+	[  953,   960)     2    0.2%    0.3%  
+	[  960,   974)     0    0.0%    0.3%  
+	[  974,  1002)     2    0.2%    0.5%  
+	[ 1002,  1056)     5    0.5%    1.0%  
+	[ 1056,  1162)    23    2.3%    3.3%  
+	[ 1162,  1369)    49    4.9%    8.2%  
+	[ 1369,  1772)    70    7.0%   15.2%  #
+	[ 1772,  2558)   132   13.2%   28.4%  #
+	[ 2558,  4090)   236   23.6%   52.0%  ##
+	[ 4090,  7074)   123   12.3%   64.3%  #
+	[ 7074, 12888)   290   29.0%   93.3%  ###
+	[12888, 24213)    67    6.7%  100.0%  #
+	[24213, 46274)     0    0.0%  100.0%  
+	[46274,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux___1K_chunks___10B-2	    3000	   2732019 ns/op	   0.73 MB/s
+--- Histogram (unit: µs)
+	Count: 3000  Min: 960  Max: 49925  Avg: 2731.11
+	------------------------------------------------------------
+	[  960,   961)     1    0.0%    0.0%  
+	[  961,   963)     0    0.0%    0.0%  
+	[  963,   967)     1    0.0%    0.1%  
+	[  967,   975)     1    0.0%    0.1%  
+	[  975,   992)     2    0.1%    0.2%  
+	[  992,  1028)    11    0.4%    0.5%  
+	[ 1028,  1103)    38    1.3%    1.8%  
+	[ 1103,  1257)   295    9.8%   11.6%  #
+	[ 1257,  1574)  1111   37.0%   48.7%  ####
+	[ 1574,  2225)  1209   40.3%   89.0%  ####
+	[ 2225,  3563)    84    2.8%   91.8%  
+	[ 3563,  6312)    54    1.8%   93.6%  
+	[ 6312, 11960)    61    2.0%   95.6%  
+	[11960, 23562)    76    2.5%   98.1%  
+	[23562, 47397)    53    1.8%   99.9%  
+	[47397, 96362)     3    0.1%  100.0%  
+	[96362,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux___1K_chunks__100B-2	    2000	   2642355 ns/op	   0.76 MB/s
+--- Histogram (unit: µs)
+	Count: 2000  Min: 964  Max: 47935  Avg: 2641.43
+	------------------------------------------------------------
+	[  964,   965)     1    0.1%    0.1%  
+	[  965,   967)     0    0.0%    0.1%  
+	[  967,   971)     0    0.0%    0.1%  
+	[  971,   979)     0    0.0%    0.1%  
+	[  979,   996)     1    0.1%    0.1%  
+	[  996,  1032)     3    0.2%    0.2%  
+	[ 1032,  1105)    22    1.1%    1.4%  
+	[ 1105,  1256)   214   10.7%   12.1%  #
+	[ 1256,  1566)   733   36.6%   48.7%  ####
+	[ 1566,  2201)   818   40.9%   89.6%  ####
+	[ 2201,  3502)    73    3.7%   93.2%  
+	[ 3502,  6168)    21    1.1%   94.3%  
+	[ 6168, 11631)    35    1.8%   96.1%  
+	[11631, 22823)    42    2.1%   98.2%  
+	[22823, 45751)    35    1.8%   99.9%  
+	[45751, 92722)     2    0.1%  100.0%  
+	[92722,   inf)     0    0.0%  100.0%  
+Benchmark___1KB_mux___1K_chunks___1KB-2	    2000	   3128442 ns/op	   0.64 MB/s
 --- Histogram (unit: ms)
-	Count: 100  Min: 3  Max: 146  Avg: 90.14
+	Count: 2000  Min: 1  Max: 54  Avg: 2.58
 	------------------------------------------------------------
-	[  3,   4)    1    1.0%    1.0%  
-	[  4,   5)    0    0.0%    1.0%  
-	[  5,   6)    3    3.0%    4.0%  
-	[  6,   8)    1    1.0%    5.0%  
-	[  8,  11)    0    0.0%    5.0%  
-	[ 11,  16)    0    0.0%    5.0%  
-	[ 16,  23)    2    2.0%    7.0%  
-	[ 23,  33)    0    0.0%    7.0%  
-	[ 33,  47)    4    4.0%   11.0%  
-	[ 47,  66)   16   16.0%   27.0%  ##
-	[ 66,  93)   28   28.0%   55.0%  ###
-	[ 93, 131)   30   30.0%   85.0%  ###
-	[131, 183)   15   15.0%  100.0%  ##
-	[183, 256)    0    0.0%  100.0%  
-	[256, 358)    0    0.0%  100.0%  
-	[358, 501)    0    0.0%  100.0%  
-	[501, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks___10B-2	    2000	   5197620 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 44  Avg: 4.71
-	------------------------------------------------------------
-	[  1,   2)    42    2.1%    2.1%  
-	[  2,   3)   914   45.7%   47.8%  #####
-	[  3,   4)   548   27.4%   75.2%  ###
-	[  4,   6)   191    9.6%   84.8%  #
-	[  6,   8)    48    2.4%   87.2%  
-	[  8,  11)    50    2.5%   89.7%  
-	[ 11,  15)    76    3.8%   93.5%  
-	[ 15,  20)    30    1.5%   95.0%  
-	[ 20,  27)    46    2.3%   97.2%  
-	[ 27,  36)    40    2.0%   99.2%  
-	[ 36,  48)    15    0.8%  100.0%  
-	[ 48,  63)     0    0.0%  100.0%  
-	[ 63,  83)     0    0.0%  100.0%  
-	[ 83, 109)     0    0.0%  100.0%  
-	[109, 142)     0    0.0%  100.0%  
-	[142, 185)     0    0.0%  100.0%  
-	[185, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks__100B	     100	  94502013 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 4  Max: 157  Avg: 93.97
-	------------------------------------------------------------
-	[  4,   5)    1    1.0%    1.0%  
-	[  5,   6)    0    0.0%    1.0%  
-	[  6,   7)    0    0.0%    1.0%  
-	[  7,   9)    1    1.0%    2.0%  
-	[  9,  12)    0    0.0%    2.0%  
-	[ 12,  17)    0    0.0%    2.0%  
-	[ 17,  24)    0    0.0%    2.0%  
-	[ 24,  34)    1    1.0%    3.0%  
-	[ 34,  48)    3    3.0%    6.0%  
-	[ 48,  68)   19   19.0%   25.0%  ##
-	[ 68,  96)   27   27.0%   52.0%  ###
-	[ 96, 136)   39   39.0%   91.0%  ####
-	[136, 191)    9    9.0%  100.0%  #
-	[191, 269)    0    0.0%  100.0%  
-	[269, 378)    0    0.0%  100.0%  
-	[378, 531)    0    0.0%  100.0%  
-	[531, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks__100B-2	    2000	   5453937 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 44  Avg: 4.96
-	------------------------------------------------------------
-	[  1,   2)    28    1.4%    1.4%  
-	[  2,   3)   870   43.5%   44.9%  ####
-	[  3,   4)   565   28.2%   73.2%  ###
-	[  4,   6)   245   12.2%   85.4%  #
-	[  6,   8)    41    2.1%   87.5%  
-	[  8,  11)    42    2.1%   89.6%  
-	[ 11,  15)    24    1.2%   90.8%  
-	[ 15,  20)    73    3.7%   94.4%  
-	[ 20,  27)    53    2.7%   97.1%  
-	[ 27,  36)    37    1.9%   98.9%  
-	[ 36,  48)    22    1.1%  100.0%  
-	[ 48,  63)     0    0.0%  100.0%  
-	[ 63,  83)     0    0.0%  100.0%  
-	[ 83, 109)     0    0.0%  100.0%  
-	[109, 142)     0    0.0%  100.0%  
-	[142, 185)     0    0.0%  100.0%  
-	[185, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks___1KB	     100	 107052234 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 9  Max: 169  Avg: 106.52
-	------------------------------------------------------------
-	[  9,  10)    1    1.0%    1.0%  
-	[ 10,  11)    0    0.0%    1.0%  
-	[ 11,  12)    0    0.0%    1.0%  
-	[ 12,  14)    0    0.0%    1.0%  
-	[ 14,  17)    2    2.0%    3.0%  
-	[ 17,  22)    0    0.0%    3.0%  
-	[ 22,  29)    0    0.0%    3.0%  
-	[ 29,  39)    1    1.0%    4.0%  
-	[ 39,  53)    2    2.0%    6.0%  
-	[ 53,  74)   14   14.0%   20.0%  #
-	[ 74, 103)   38   38.0%   58.0%  ####
-	[103, 144)   11   11.0%   69.0%  #
-	[144, 201)   31   31.0%  100.0%  ###
-	[201, 282)    0    0.0%  100.0%  
-	[282, 396)    0    0.0%  100.0%  
-	[396, 555)    0    0.0%  100.0%  
-	[555, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks___1KB-2	    2000	   6698998 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 54  Avg: 6.20
-	------------------------------------------------------------
-	[  1,   2)     7    0.4%    0.4%  
-	[  2,   3)   554   27.7%   28.1%  ###
-	[  3,   4)   655   32.8%   60.8%  ###
-	[  4,   6)   433   21.7%   82.5%  ##
-	[  6,   8)    59    3.0%   85.4%  
-	[  8,  11)    38    1.9%   87.3%  
-	[ 11,  15)    41    2.1%   89.4%  
-	[ 15,  21)    63    3.2%   92.5%  
-	[ 21,  29)    45    2.2%   94.8%  
-	[ 29,  39)    61    3.1%   97.8%  
-	[ 39,  53)    40    2.0%   99.8%  
-	[ 53,  71)     4    0.2%  100.0%  
+	[  1,   2)  1494   74.7%   74.7%  #######
+	[  2,   3)   330   16.5%   91.2%  ##
+	[  3,   4)    18    0.9%   92.1%  
+	[  4,   6)    19    1.0%   93.1%  
+	[  6,   8)    12    0.6%   93.7%  
+	[  8,  11)    17    0.9%   94.5%  
+	[ 11,  15)    33    1.7%   96.2%  
+	[ 15,  21)    30    1.5%   97.7%  
+	[ 21,  29)     9    0.5%   98.1%  
+	[ 29,  39)    17    0.9%   99.0%  
+	[ 39,  53)    20    1.0%  100.0%  
+	[ 53,  71)     1    0.1%  100.0%  
 	[ 71,  94)     0    0.0%  100.0%  
 	[ 94, 125)     0    0.0%  100.0%  
 	[125, 165)     0    0.0%  100.0%  
 	[165, 218)     0    0.0%  100.0%  
 	[218, inf)     0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks__10KB	     100	  72865483 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 17  Max: 119  Avg: 72.31
+Benchmark___1KB_mux___1K_chunks__10KB-2	     300	  21164935 ns/op	   0.09 MB/s
+--- Histogram (unit: µs)
+	Count: 300  Min: 973  Max: 67388  Avg: 21163.92
 	------------------------------------------------------------
-	[ 17,  18)    4    4.0%    4.0%  
-	[ 18,  19)    2    2.0%    6.0%  
-	[ 19,  20)    0    0.0%    6.0%  
-	[ 20,  22)    1    1.0%    7.0%  
-	[ 22,  25)    1    1.0%    8.0%  
-	[ 25,  29)    0    0.0%    8.0%  
-	[ 29,  35)    1    1.0%    9.0%  
-	[ 35,  43)    8    8.0%   17.0%  #
-	[ 43,  54)    7    7.0%   24.0%  #
-	[ 54,  70)   17   17.0%   41.0%  ##
-	[ 70,  91)   33   33.0%   74.0%  ###
-	[ 91, 120)   26   26.0%  100.0%  ###
-	[120, 160)    0    0.0%  100.0%  
-	[160, 215)    0    0.0%  100.0%  
-	[215, 289)    0    0.0%  100.0%  
-	[289, 391)    0    0.0%  100.0%  
-	[391, inf)    0    0.0%  100.0%  
-Benchmark___10B_mux___1K_chunks__10KB-2	     200	  36049367 ns/op	   0.00 MB/s
---- Histogram (unit: ms)
-	Count: 200  Min: 2  Max: 77  Avg: 35.57
-	------------------------------------------------------------
-	[  2,   3)    9    4.5%    4.5%  
-	[  3,   4)    7    3.5%    8.0%  
-	[  4,   5)    3    1.5%    9.5%  
-	[  5,   7)    6    3.0%   12.5%  
-	[  7,  10)    6    3.0%   15.5%  
-	[ 10,  14)    6    3.0%   18.5%  
-	[ 14,  19)    9    4.5%   23.0%  
-	[ 19,  26)   17    8.5%   31.5%  #
-	[ 26,  36)   29   14.5%   46.0%  #
-	[ 36,  49)   46   23.0%   69.0%  ##
-	[ 49,  66)   54   27.0%   96.0%  ###
-	[ 66,  89)    8    4.0%  100.0%  
-	[ 89, 120)    0    0.0%  100.0%  
-	[120, 162)    0    0.0%  100.0%  
-	[162, 218)    0    0.0%  100.0%  
-	[218, 292)    0    0.0%  100.0%  
-	[292, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks___10B	     500	  17557482 ns/op	   0.11 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 11  Max: 35  Avg: 17.08
-	------------------------------------------------------------
-	[ 11,  12)    4    0.8%    0.8%  
-	[ 12,  13)    3    0.6%    1.4%  
-	[ 13,  14)    0    0.0%    1.4%  
-	[ 14,  15)   98   19.6%   21.0%  ##
-	[ 15,  17)  317   63.4%   84.4%  ######
-	[ 17,  19)   11    2.2%   86.6%  
-	[ 19,  22)    2    0.4%   87.0%  
-	[ 22,  26)    4    0.8%   87.8%  
-	[ 26,  31)    6    1.2%   89.0%  
-	[ 31,  37)   55   11.0%  100.0%  #
-	[ 37,  45)    0    0.0%  100.0%  
-	[ 45,  55)    0    0.0%  100.0%  
-	[ 55,  67)    0    0.0%  100.0%  
-	[ 67,  82)    0    0.0%  100.0%  
-	[ 82, 101)    0    0.0%  100.0%  
-	[101, 125)    0    0.0%  100.0%  
-	[125, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks___10B-2	    2000	   4004379 ns/op	   0.50 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 21  Avg: 3.51
-	------------------------------------------------------------
-	[  1,   2)    40    2.0%    2.0%  
-	[  2,   3)   894   44.7%   46.7%  ####
-	[  3,   4)   504   25.2%   71.9%  ###
-	[  4,   5)   259   13.0%   84.9%  #
-	[  5,   7)   124    6.2%   91.1%  #
-	[  7,   9)    35    1.8%   92.8%  
-	[  9,  12)    88    4.4%   97.2%  
-	[ 12,  16)    32    1.6%   98.8%  
-	[ 16,  20)    16    0.8%   99.6%  
-	[ 20,  26)     8    0.4%  100.0%  
-	[ 26,  33)     0    0.0%  100.0%  
-	[ 33,  41)     0    0.0%  100.0%  
-	[ 41,  51)     0    0.0%  100.0%  
-	[ 51,  64)     0    0.0%  100.0%  
-	[ 64,  80)     0    0.0%  100.0%  
-	[ 80,  99)     0    0.0%  100.0%  
-	[ 99, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks__100B	     500	  18342199 ns/op	   0.11 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 8  Max: 39  Avg: 17.82
-	------------------------------------------------------------
-	[  8,   9)    1    0.2%    0.2%  
-	[  9,  10)    0    0.0%    0.2%  
-	[ 10,  11)    0    0.0%    0.2%  
-	[ 11,  12)    0    0.0%    0.2%  
-	[ 12,  14)    4    0.8%    1.0%  
-	[ 14,  17)  411   82.2%   83.2%  ########
-	[ 17,  20)   15    3.0%   86.2%  
-	[ 20,  24)    3    0.6%   86.8%  
-	[ 24,  30)    7    1.4%   88.2%  
-	[ 30,  37)   41    8.2%   96.4%  #
-	[ 37,  46)   18    3.6%  100.0%  
-	[ 46,  58)    0    0.0%  100.0%  
-	[ 58,  73)    0    0.0%  100.0%  
-	[ 73,  92)    0    0.0%  100.0%  
-	[ 92, 116)    0    0.0%  100.0%  
-	[116, 146)    0    0.0%  100.0%  
-	[146, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks__100B-2	    2000	   4158739 ns/op	   0.48 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 24  Avg: 3.66
-	------------------------------------------------------------
-	[  1,   2)    27    1.4%    1.4%  
-	[  2,   3)   875   43.8%   45.1%  ####
-	[  3,   4)   522   26.1%   71.2%  ###
-	[  4,   5)   257   12.9%   84.1%  #
-	[  5,   7)   153    7.7%   91.7%  #
-	[  7,   9)    19    1.0%   92.7%  
-	[  9,  12)    51    2.6%   95.2%  
-	[ 12,  16)    58    2.9%   98.1%  
-	[ 16,  21)    20    1.0%   99.1%  
-	[ 21,  27)    18    0.9%  100.0%  
-	[ 27,  35)     0    0.0%  100.0%  
-	[ 35,  44)     0    0.0%  100.0%  
-	[ 44,  56)     0    0.0%  100.0%  
-	[ 56,  71)     0    0.0%  100.0%  
-	[ 71,  89)     0    0.0%  100.0%  
-	[ 89, 111)     0    0.0%  100.0%  
-	[111, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks___1KB	     300	  20721971 ns/op	   0.10 MB/s
---- Histogram (unit: ms)
-	Count: 300  Min: 13  Max: 42  Avg: 20.25
-	------------------------------------------------------------
-	[ 13,  14)    1    0.3%    0.3%  
-	[ 14,  15)    0    0.0%    0.3%  
-	[ 15,  16)    0    0.0%    0.3%  
-	[ 16,  17)   21    7.0%    7.3%  #
-	[ 17,  19)  213   71.0%   78.3%  #######
-	[ 19,  22)   15    5.0%   83.3%  #
-	[ 22,  25)    3    1.0%   84.3%  
-	[ 25,  29)    7    2.3%   86.7%  
-	[ 29,  35)    8    2.7%   89.3%  
-	[ 35,  42)   31   10.3%   99.7%  #
-	[ 42,  51)    1    0.3%  100.0%  
-	[ 51,  62)    0    0.0%  100.0%  
-	[ 62,  76)    0    0.0%  100.0%  
-	[ 76,  94)    0    0.0%  100.0%  
-	[ 94, 117)    0    0.0%  100.0%  
-	[117, 145)    0    0.0%  100.0%  
-	[145, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks___1KB-2	    2000	   4859684 ns/op	   0.41 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 27  Avg: 4.37
-	------------------------------------------------------------
-	[  1,   2)    16    0.8%    0.8%  
-	[  2,   3)   597   29.9%   30.7%  ###
-	[  3,   4)   522   26.1%   56.8%  ###
-	[  4,   5)   321   16.1%   72.8%  ##
-	[  5,   7)   331   16.6%   89.4%  ##
-	[  7,   9)    57    2.9%   92.2%  
-	[  9,  12)    30    1.5%   93.7%  
-	[ 12,  16)    65    3.2%   97.0%  
-	[ 16,  21)    25    1.2%   98.2%  
-	[ 21,  28)    36    1.8%  100.0%  
-	[ 28,  36)     0    0.0%  100.0%  
-	[ 36,  46)     0    0.0%  100.0%  
-	[ 46,  59)     0    0.0%  100.0%  
-	[ 59,  75)     0    0.0%  100.0%  
-	[ 75,  95)     0    0.0%  100.0%  
-	[ 95, 120)     0    0.0%  100.0%  
-	[120, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks__10KB	     200	  41306487 ns/op	   0.05 MB/s
---- Histogram (unit: ms)
-	Count: 200  Min: 14  Max: 62  Avg: 40.84
-	------------------------------------------------------------
-	[ 14,  15)    1    0.5%    0.5%  
-	[ 15,  16)    0    0.0%    0.5%  
-	[ 16,  17)    1    0.5%    1.0%  
-	[ 17,  19)    0    0.0%    1.0%  
-	[ 19,  21)    0    0.0%    1.0%  
-	[ 21,  24)    1    0.5%    1.5%  
-	[ 24,  28)    0    0.0%    1.5%  
-	[ 28,  34)    7    3.5%    5.0%  
-	[ 34,  41)  123   61.5%   66.5%  ######
-	[ 41,  51)   20   10.0%   76.5%  #
-	[ 51,  64)   47   23.5%  100.0%  ##
-	[ 64,  81)    0    0.0%  100.0%  
-	[ 81, 103)    0    0.0%  100.0%  
-	[103, 131)    0    0.0%  100.0%  
-	[131, 168)    0    0.0%  100.0%  
-	[168, 215)    0    0.0%  100.0%  
-	[215, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux__100_chunks__10KB-2	     500	  13333632 ns/op	   0.15 MB/s
---- Histogram (unit: ms)
-	Count: 500  Min: 1  Max: 35  Avg: 12.88
-	------------------------------------------------------------
-	[  1,   2)    6    1.2%    1.2%  
-	[  2,   3)   85   17.0%   18.2%  ##
-	[  3,   4)   28    5.6%   23.8%  #
-	[  4,   6)   21    4.2%   28.0%  
-	[  6,   8)   24    4.8%   32.8%  
-	[  8,  11)   58   11.6%   44.4%  #
-	[ 11,  15)   41    8.2%   52.6%  #
-	[ 15,  20)  164   32.8%   85.4%  ###
-	[ 20,  26)   11    2.2%   87.6%  
-	[ 26,  34)   59   11.8%   99.4%  #
-	[ 34,  44)    3    0.6%  100.0%  
-	[ 44,  57)    0    0.0%  100.0%  
-	[ 57,  73)    0    0.0%  100.0%  
-	[ 73,  94)    0    0.0%  100.0%  
-	[ 94, 120)    0    0.0%  100.0%  
-	[120, 153)    0    0.0%  100.0%  
-	[153, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks___10B	     100	  95489036 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 6  Max: 149  Avg: 95.00
-	------------------------------------------------------------
-	[  6,   7)    1    1.0%    1.0%  
-	[  7,   8)    0    0.0%    1.0%  
-	[  8,   9)    0    0.0%    1.0%  
-	[  9,  11)    1    1.0%    2.0%  
-	[ 11,  14)    0    0.0%    2.0%  
-	[ 14,  19)    0    0.0%    2.0%  
-	[ 19,  26)    0    0.0%    2.0%  
-	[ 26,  36)    3    3.0%    5.0%  
-	[ 36,  50)    8    8.0%   13.0%  #
-	[ 50,  69)   10   10.0%   23.0%  #
-	[ 69,  96)   21   21.0%   44.0%  ##
-	[ 96, 134)   38   38.0%   82.0%  ####
-	[134, 186)   18   18.0%  100.0%  ##
-	[186, 259)    0    0.0%  100.0%  
-	[259, 361)    0    0.0%  100.0%  
-	[361, 504)    0    0.0%  100.0%  
-	[504, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks___10B-2	    2000	   5187056 ns/op	   0.39 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 49  Avg: 4.70
-	------------------------------------------------------------
-	[  1,   2)    19    1.0%    1.0%  
-	[  2,   3)   848   42.4%   43.4%  ####
-	[  3,   4)   637   31.9%   75.2%  ###
-	[  4,   6)   247   12.4%   87.6%  #
-	[  6,   8)    26    1.3%   88.9%  
-	[  8,  11)    19    1.0%   89.8%  
-	[ 11,  15)    44    2.2%   92.0%  
-	[ 15,  21)    40    2.0%   94.0%  
-	[ 21,  28)    93    4.7%   98.7%  
-	[ 28,  38)    24    1.2%   99.9%  
-	[ 38,  51)     3    0.2%  100.0%  
-	[ 51,  68)     0    0.0%  100.0%  
-	[ 68,  90)     0    0.0%  100.0%  
-	[ 90, 118)     0    0.0%  100.0%  
-	[118, 155)     0    0.0%  100.0%  
-	[155, 202)     0    0.0%  100.0%  
-	[202, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks__100B	     100	  96851485 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 16  Max: 168  Avg: 96.35
-	------------------------------------------------------------
-	[ 16,  17)    1    1.0%    1.0%  
-	[ 17,  18)    1    1.0%    2.0%  
-	[ 18,  19)    0    0.0%    2.0%  
-	[ 19,  21)    0    0.0%    2.0%  
-	[ 21,  24)    0    0.0%    2.0%  
-	[ 24,  29)    2    2.0%    4.0%  
-	[ 29,  36)    2    2.0%    6.0%  
-	[ 36,  46)    2    2.0%    8.0%  
-	[ 46,  60)    7    7.0%   15.0%  #
-	[ 60,  80)   16   16.0%   31.0%  ##
-	[ 80, 108)   29   29.0%   60.0%  ###
-	[108, 147)   36   36.0%   96.0%  ####
-	[147, 202)    4    4.0%  100.0%  
-	[202, 279)    0    0.0%  100.0%  
-	[279, 387)    0    0.0%  100.0%  
-	[387, 538)    0    0.0%  100.0%  
-	[538, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks__100B-2	    2000	   5385397 ns/op	   0.37 MB/s
---- Histogram (unit: ms)
-	Count: 2000  Min: 1  Max: 56  Avg: 4.88
-	------------------------------------------------------------
-	[  1,   2)    22    1.1%    1.1%  
-	[  2,   3)   822   41.1%   42.2%  ####
-	[  3,   4)   657   32.9%   75.0%  ###
-	[  4,   6)   262   13.1%   88.2%  #
-	[  6,   8)    33    1.7%   89.8%  
-	[  8,  11)    15    0.8%   90.6%  
-	[ 11,  15)    16    0.8%   91.4%  
-	[ 15,  21)    40    2.0%   93.4%  
-	[ 21,  29)    93    4.7%   98.0%  
-	[ 29,  40)    29    1.5%   99.5%  
-	[ 40,  54)    10    0.5%  100.0%  
-	[ 54,  72)     1    0.1%  100.0%  
-	[ 72,  96)     0    0.0%  100.0%  
-	[ 96, 128)     0    0.0%  100.0%  
-	[128, 170)     0    0.0%  100.0%  
-	[170, 225)     0    0.0%  100.0%  
-	[225, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks___1KB	     100	 110514593 ns/op	   0.02 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 6  Max: 174  Avg: 110.01
-	------------------------------------------------------------
-	[  6,   7)    1    1.0%    1.0%  
-	[  7,   8)    0    0.0%    1.0%  
-	[  8,   9)    0    0.0%    1.0%  
-	[  9,  11)    0    0.0%    1.0%  
-	[ 11,  14)    1    1.0%    2.0%  
-	[ 14,  19)    1    1.0%    3.0%  
-	[ 19,  26)    1    1.0%    4.0%  
-	[ 26,  36)    3    3.0%    7.0%  
-	[ 36,  51)    3    3.0%   10.0%  
-	[ 51,  72)   13   13.0%   23.0%  #
-	[ 72, 102)   23   23.0%   46.0%  ##
-	[102, 144)   19   19.0%   65.0%  ##
-	[144, 204)   35   35.0%  100.0%  ####
-	[204, 288)    0    0.0%  100.0%  
-	[288, 407)    0    0.0%  100.0%  
-	[407, 575)    0    0.0%  100.0%  
-	[575, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks___1KB-2	    1000	   7283778 ns/op	   0.27 MB/s
---- Histogram (unit: ms)
-	Count: 1000  Min: 1  Max: 44  Avg: 6.78
-	------------------------------------------------------------
-	[  1,   2)    23    2.3%    2.3%  
-	[  2,   3)   268   26.8%   29.1%  ###
-	[  3,   4)   295   29.5%   58.6%  ###
-	[  4,   6)   204   20.4%   79.0%  ##
-	[  6,   8)    51    5.1%   84.1%  #
-	[  8,  11)    13    1.3%   85.4%  
-	[ 11,  15)     9    0.9%   86.3%  
-	[ 15,  20)    29    2.9%   89.2%  
-	[ 20,  27)    12    1.2%   90.4%  
-	[ 27,  36)    80    8.0%   98.4%  #
-	[ 36,  48)    16    1.6%  100.0%  
-	[ 48,  63)     0    0.0%  100.0%  
-	[ 63,  83)     0    0.0%  100.0%  
-	[ 83, 109)     0    0.0%  100.0%  
-	[109, 142)     0    0.0%  100.0%  
-	[142, 185)     0    0.0%  100.0%  
-	[185, inf)     0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks__10KB	     100	  76530881 ns/op	   0.03 MB/s
---- Histogram (unit: ms)
-	Count: 100  Min: 17  Max: 137  Avg: 75.99
-	------------------------------------------------------------
-	[ 17,  18)    6    6.0%    6.0%  #
-	[ 18,  19)    0    0.0%    6.0%  
-	[ 19,  20)    1    1.0%    7.0%  
-	[ 20,  22)    2    2.0%    9.0%  
-	[ 22,  25)    0    0.0%    9.0%  
-	[ 25,  29)    0    0.0%    9.0%  
-	[ 29,  35)    0    0.0%    9.0%  
-	[ 35,  44)    5    5.0%   14.0%  #
-	[ 44,  56)   10   10.0%   24.0%  #
-	[ 56,  73)   20   20.0%   44.0%  ##
-	[ 73,  97)   27   27.0%   71.0%  ###
-	[ 97, 130)   28   28.0%   99.0%  ###
-	[130, 176)    1    1.0%  100.0%  
-	[176, 239)    0    0.0%  100.0%  
-	[239, 326)    0    0.0%  100.0%  
-	[326, 445)    0    0.0%  100.0%  
-	[445, inf)    0    0.0%  100.0%  
-Benchmark___1KB_mux___1K_chunks__10KB-2	     200	  38503258 ns/op	   0.05 MB/s
---- Histogram (unit: ms)
-	Count: 200  Min: 2  Max: 80  Avg: 38.01
-	------------------------------------------------------------
-	[  2,   3)   10    5.0%    5.0%  #
-	[  3,   4)    1    0.5%    5.5%  
-	[  4,   5)    2    1.0%    6.5%  
-	[  5,   7)    4    2.0%    8.5%  
-	[  7,  10)    5    2.5%   11.0%  
-	[ 10,  14)   12    6.0%   17.0%  #
-	[ 14,  19)    4    2.0%   19.0%  
-	[ 19,  26)   12    6.0%   25.0%  #
-	[ 26,  36)   36   18.0%   43.0%  ##
-	[ 36,  49)   54   27.0%   70.0%  ###
-	[ 49,  67)   47   23.5%   93.5%  ##
-	[ 67,  91)   13    6.5%  100.0%  #
-	[ 91, 123)    0    0.0%  100.0%  
-	[123, 166)    0    0.0%  100.0%  
-	[166, 224)    0    0.0%  100.0%  
-	[224, 302)    0    0.0%  100.0%  
-	[302, inf)    0    0.0%  100.0%  
+	[   973,    974)    1    0.3%    0.3%  
+	[   974,    976)    0    0.0%    0.3%  
+	[   976,    980)    1    0.3%    0.7%  
+	[   980,    989)    0    0.0%    0.7%  
+	[   989,   1008)    0    0.0%    0.7%  
+	[  1008,   1048)    0    0.0%    0.7%  
+	[  1048,   1132)    2    0.7%    1.3%  
+	[  1132,   1309)    7    2.3%    3.7%  
+	[  1309,   1682)   14    4.7%    8.3%  
+	[  1682,   2464)   15    5.0%   13.3%  #
+	[  2464,   4104)   28    9.3%   22.7%  #
+	[  4104,   7542)   25    8.3%   31.0%  #
+	[  7542,  14749)   37   12.3%   43.3%  #
+	[ 14749,  29860)   72   24.0%   67.3%  ##
+	[ 29860,  61539)   95   31.7%   99.0%  ###
+	[ 61539, 127953)    3    1.0%  100.0%  
+	[127953,    inf)    0    0.0%  100.0%  
diff --git a/profiles/internal/rpc/benchmark/benchmark_test.go b/profiles/internal/rpc/benchmark/benchmark_test.go
index 8bf35c8..4b757a5 100644
--- a/profiles/internal/rpc/benchmark/benchmark_test.go
+++ b/profiles/internal/rpc/benchmark/benchmark_test.go
@@ -113,7 +113,8 @@
 	ctx, shutdown = test.InitForTest()
 
 	var serverStop func()
-	serverAddr, serverStop = internal.StartServer(ctx, v23.GetListenSpec(ctx))
+	serverEP, serverStop := internal.StartServer(ctx, v23.GetListenSpec(ctx))
+	serverAddr = serverEP.Name()
 
 	// Create a VC to exclude the VC setup time from the benchmark.
 	internal.CallEcho(&testing.B{}, ctx, serverAddr, 1, 0, benchmark.NewStats(1))
diff --git a/profiles/internal/rpc/benchmark/benchmarkd/main.go b/profiles/internal/rpc/benchmark/benchmarkd/main.go
index e57ccec..52b53fb 100644
--- a/profiles/internal/rpc/benchmark/benchmarkd/main.go
+++ b/profiles/internal/rpc/benchmark/benchmarkd/main.go
@@ -18,8 +18,8 @@
 	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	addr, stop := internal.StartServer(ctx, v23.GetListenSpec(ctx))
-	vlog.Infof("Listening on %s", addr)
+	ep, stop := internal.StartServer(ctx, v23.GetListenSpec(ctx))
+	vlog.Infof("Listening on %s", ep.Name())
 	defer stop()
 	<-signals.ShutdownOnSignals(ctx)
 }
diff --git a/profiles/internal/rpc/benchmark/internal/client.go b/profiles/internal/rpc/benchmark/internal/client.go
index d49ffb5..0e8f485 100644
--- a/profiles/internal/rpc/benchmark/internal/client.go
+++ b/profiles/internal/rpc/benchmark/internal/client.go
@@ -11,8 +11,8 @@
 	"time"
 
 	"v.io/v23/context"
-	"v.io/x/lib/vlog"
 
+	"v.io/x/lib/vlog"
 	"v.io/x/ref/profiles/internal/rpc/benchmark"
 	tbm "v.io/x/ref/test/benchmark"
 )
diff --git a/profiles/internal/rpc/benchmark/internal/server.go b/profiles/internal/rpc/benchmark/internal/server.go
index 6cce472..98e2a08 100644
--- a/profiles/internal/rpc/benchmark/internal/server.go
+++ b/profiles/internal/rpc/benchmark/internal/server.go
@@ -7,7 +7,9 @@
 import (
 	"v.io/v23"
 	"v.io/v23/context"
+	"v.io/v23/naming"
 	"v.io/v23/rpc"
+
 	"v.io/x/lib/vlog"
 	"v.io/x/ref/lib/security/securityflag"
 	"v.io/x/ref/profiles/internal/rpc/benchmark"
@@ -35,7 +37,7 @@
 // StartServer starts a server that implements the Benchmark service. The
 // server listens to the given protocol and address, and returns the vanadium
 // address of the server and a callback function to stop the server.
-func StartServer(ctx *context.T, listenSpec rpc.ListenSpec) (string, func()) {
+func StartServer(ctx *context.T, listenSpec rpc.ListenSpec) (naming.Endpoint, func()) {
 	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer failed: %v", err)
@@ -44,11 +46,14 @@
 	if err != nil {
 		vlog.Fatalf("Listen failed: %v", err)
 	}
+	if len(eps) == 0 {
+		vlog.Fatal("No local address to listen on")
+	}
 
 	if err := server.Serve("", benchmark.BenchmarkServer(&impl{}), securityflag.NewAuthorizerOrDie()); err != nil {
 		vlog.Fatalf("Serve failed: %v", err)
 	}
-	return eps[0].Name(), func() {
+	return eps[0], func() {
 		if err := server.Stop(); err != nil {
 			vlog.Fatalf("Stop() failed: %v", err)
 		}
diff --git a/profiles/internal/rpc/benchmark/main/main.go b/profiles/internal/rpc/benchmark/main/main.go
new file mode 100644
index 0000000..dd145e3
--- /dev/null
+++ b/profiles/internal/rpc/benchmark/main/main.go
@@ -0,0 +1,132 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+	"flag"
+	"fmt"
+	"runtime"
+	"testing"
+	"time"
+
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+
+	"v.io/x/lib/vlog"
+	"v.io/x/ref/profiles/internal/rpc/benchmark/internal"
+	"v.io/x/ref/profiles/internal/rpc/stream/manager"
+	_ "v.io/x/ref/profiles/static"
+	"v.io/x/ref/test"
+	"v.io/x/ref/test/benchmark"
+	"v.io/x/ref/test/testutil"
+)
+
+const (
+	payloadSize = 1000
+	chunkCnt    = 1000
+
+	bulkPayloadSize = 1000000
+
+	numCPUs          = 2
+	defaultBenchTime = 5 * time.Second
+)
+
+var (
+	serverEP naming.Endpoint
+	ctx      *context.T
+)
+
+// Benchmark for measuring RPC connection time including authentication.
+//
+// rpc.Client doesn't export an interface for closing connection. So we
+// use the stream manager directly here.
+func benchmarkRPCConnection(b *testing.B) {
+	mp := runtime.GOMAXPROCS(numCPUs)
+	defer runtime.GOMAXPROCS(mp)
+
+	principal := testutil.NewPrincipal("test")
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		client := manager.InternalNew(naming.FixedRoutingID(0xc))
+
+		b.StartTimer()
+
+		_, err := client.Dial(serverEP, principal)
+		if err != nil {
+			vlog.Fatalf("Dial failed: %v", err)
+		}
+
+		b.StopTimer()
+
+		client.Shutdown()
+	}
+}
+
+// Benchmark for non-streaming RPC.
+func benchmarkRPC(b *testing.B) {
+	mp := runtime.GOMAXPROCS(numCPUs)
+	defer runtime.GOMAXPROCS(mp)
+	internal.CallEcho(b, ctx, serverEP.Name(), b.N, payloadSize, benchmark.NewStats(1))
+}
+
+// Benchmark for streaming RPC.
+func benchmarkStreamingRPC(b *testing.B) {
+	mp := runtime.GOMAXPROCS(numCPUs)
+	defer runtime.GOMAXPROCS(mp)
+	internal.CallEchoStream(b, ctx, serverEP.Name(), b.N, chunkCnt, payloadSize, benchmark.NewStats(1))
+}
+
+// Benchmark for measuring throughput in streaming RPC.
+func benchmarkStreamingRPCThroughput(b *testing.B) {
+	mp := runtime.GOMAXPROCS(numCPUs)
+	defer runtime.GOMAXPROCS(mp)
+	internal.CallEchoStream(b, ctx, serverEP.Name(), 1, b.N, bulkPayloadSize, benchmark.NewStats(1))
+}
+
+func msPerRPC(r testing.BenchmarkResult) float64 {
+	return r.T.Seconds() / float64(r.N) * 1000
+}
+
+func rpcPerSec(r testing.BenchmarkResult) float64 {
+	return float64(r.N) / r.T.Seconds()
+}
+func mbPerSec(r testing.BenchmarkResult) float64 {
+	return (float64(r.Bytes) * float64(r.N) / 1e6) / r.T.Seconds()
+}
+
+func runBenchmarks() {
+	r := testing.Benchmark(benchmarkRPCConnection)
+	fmt.Printf("RPC Connection\t%.2f ms/rpc\n", msPerRPC(r))
+
+	// Create a connection to exclude the setup time from the following benchmarks.
+	internal.CallEcho(&testing.B{}, ctx, serverEP.Name(), 1, 0, benchmark.NewStats(1))
+
+	r = testing.Benchmark(benchmarkRPC)
+	fmt.Printf("RPC (echo %vB)\t%.2f ms/rpc (%.2f qps)\n", payloadSize, msPerRPC(r), rpcPerSec(r))
+
+	r = testing.Benchmark(benchmarkStreamingRPC)
+	fmt.Printf("RPC Streaming (echo %vB)\t%.2f ms/rpc\n", payloadSize, msPerRPC(r)/chunkCnt)
+
+	r = testing.Benchmark(benchmarkStreamingRPCThroughput)
+	fmt.Printf("RPC Streaming Throughput (echo %vMB)\t%.2f MB/s\n", bulkPayloadSize/1e6, mbPerSec(r))
+}
+
+func main() {
+	// Set the default benchmark time.
+	flag.Set("test.benchtime", defaultBenchTime.String())
+	test.Init()
+
+	var shutdown v23.Shutdown
+	ctx, shutdown = test.InitForTest()
+	defer shutdown()
+
+	var serverStop func()
+	serverEP, serverStop = internal.StartServer(ctx, v23.GetListenSpec(ctx))
+	defer serverStop()
+
+	runBenchmarks()
+}
diff --git a/profiles/internal/rpc/client.go b/profiles/internal/rpc/client.go
index 8525a47..d8f4c9b 100644
--- a/profiles/internal/rpc/client.go
+++ b/profiles/internal/rpc/client.go
@@ -264,7 +264,7 @@
 	return true
 }
 
-func shouldRetry(action verror.ActionCode, deadline time.Time, opts []rpc.CallOpt) bool {
+func shouldRetry(action verror.ActionCode, requireResolve bool, deadline time.Time, opts []rpc.CallOpt) bool {
 	switch {
 	case noRetry(opts):
 		return false
@@ -272,7 +272,7 @@
 		return false
 	case time.Now().After(deadline):
 		return false
-	case action == verror.RetryRefetch && getNoNamespaceOpt(opts):
+	case requireResolve && getNoNamespaceOpt(opts):
 		// If we're skipping resolution and there are no servers for
 		// this call retrying is not going to help, we can't come up
 		// with new servers if there is no resolution.
@@ -317,12 +317,12 @@
 
 	var lastErr error
 	for retries := uint(0); ; retries++ {
-		call, action, err := c.tryCall(ctx, name, method, args, opts)
+		call, action, requireResolve, err := c.tryCall(ctx, name, method, args, opts)
 		if err == nil {
 			return call, nil
 		}
 		lastErr = err
-		if !shouldRetry(action, deadline, opts) {
+		if !shouldRetry(action, requireResolve, deadline, opts) {
 			span.Annotatef("Cannot retry after error: %s", err)
 			break
 		}
@@ -433,9 +433,10 @@
 // (all that serve "name"), but will invoke the method on at most one of them
 // (the server running on the most preferred protcol and network amongst all
 // the servers that were successfully connected to and authorized).
-func (c *client) tryCall(ctx *context.T, name, method string, args []interface{}, opts []rpc.CallOpt) (rpc.ClientCall, verror.ActionCode, error) {
+// if requireResolve is true on return, then we shouldn't bother retrying unless
+// you can re-resolve.
+func (c *client) tryCall(ctx *context.T, name, method string, args []interface{}, opts []rpc.CallOpt) (call rpc.ClientCall, action verror.ActionCode, requireResolve bool, err error) {
 	var resolved *naming.MountEntry
-	var err error
 	var blessingPattern security.BlessingPattern
 	blessingPattern, name = security.SplitPatternName(name)
 	if resolved, err = c.ns.Resolve(ctx, name, getNamespaceOpts(opts)...); err != nil {
@@ -444,21 +445,21 @@
 		// in the near future.
 		switch {
 		case verror.ErrorID(err) == naming.ErrNoSuchName.ID:
-			return nil, verror.RetryRefetch, verror.New(verror.ErrNoServers, ctx, name)
+			return nil, verror.RetryRefetch, false, verror.New(verror.ErrNoServers, ctx, name)
 		case verror.ErrorID(err) == verror.ErrNoServers.ID:
 			// Avoid wrapping errors unnecessarily.
-			return nil, verror.NoRetry, err
+			return nil, verror.NoRetry, false, err
 		default:
-			return nil, verror.NoRetry, verror.New(verror.ErrNoServers, ctx, name, err)
+			return nil, verror.NoRetry, false, verror.New(verror.ErrNoServers, ctx, name, err)
 		}
 	} else {
 		if len(resolved.Servers) == 0 {
 			// This should never happen.
-			return nil, verror.NoRetry, verror.New(verror.ErrInternal, ctx, name)
+			return nil, verror.NoRetry, true, verror.New(verror.ErrInternal, ctx, name)
 		}
 		// An empty set of protocols means all protocols...
 		if resolved.Servers, err = filterAndOrderServers(resolved.Servers, c.preferredProtocols, c.ipNets); err != nil {
-			return nil, verror.RetryRefetch, verror.New(verror.ErrNoServers, ctx, name, err)
+			return nil, verror.RetryRefetch, true, verror.New(verror.ErrNoServers, ctx, name, err)
 		}
 	}
 
@@ -477,7 +478,7 @@
 	var principal security.Principal
 	if callEncrypted(opts) {
 		if principal = v23.GetPrincipal(ctx); principal == nil {
-			return nil, verror.NoRetry, verror.New(errNoPrincipal, ctx)
+			return nil, verror.NoRetry, false, verror.New(errNoPrincipal, ctx)
 		}
 	}
 
@@ -527,11 +528,11 @@
 			}
 		case <-timeoutChan:
 			vlog.VI(2).Infof("rpc: timeout on connection to server %v ", name)
-			_, _, err := c.failedTryCall(ctx, name, method, responses, ch)
+			_, _, _, err := c.failedTryCall(ctx, name, method, responses, ch)
 			if verror.ErrorID(err) != verror.ErrTimeout.ID {
-				return nil, verror.NoRetry, verror.New(verror.ErrTimeout, ctx, err)
+				return nil, verror.NoRetry, false, verror.New(verror.ErrTimeout, ctx, err)
 			}
-			return nil, verror.NoRetry, err
+			return nil, verror.NoRetry, false, err
 		}
 
 		dc := c.dc
@@ -552,7 +553,7 @@
 			r.flow.SetDeadline(doneChan)
 			fc, err := newFlowClient(ctx, r.flow, r.blessings, dc)
 			if err != nil {
-				return nil, verror.NoRetry, err
+				return nil, verror.NoRetry, false, err
 			}
 
 			if err := fc.prepareBlessingsAndDischarges(ctx, method, r.suffix, args, r.rejectedBlessings, opts); err != nil {
@@ -596,9 +597,9 @@
 
 			deadline, _ := ctx.Deadline()
 			if verr := fc.start(r.suffix, method, args, deadline); verr != nil {
-				return nil, verror.NoRetry, verr
+				return nil, verror.NoRetry, false, verr
 			}
-			return fc, verror.NoRetry, nil
+			return fc, verror.NoRetry, false, nil
 		}
 		if numResponses == len(responses) {
 			return c.failedTryCall(ctx, name, method, responses, ch)
@@ -635,7 +636,7 @@
 // failedTryCall performs asynchronous cleanup for tryCall, and returns an
 // appropriate error from the responses we've already received.  All parallel
 // calls in tryCall failed or we timed out if we get here.
-func (c *client) failedTryCall(ctx *context.T, name, method string, responses []*serverStatus, ch chan *serverStatus) (rpc.ClientCall, verror.ActionCode, error) {
+func (c *client) failedTryCall(ctx *context.T, name, method string, responses []*serverStatus, ch chan *serverStatus) (rpc.ClientCall, verror.ActionCode, bool, error) {
 	go cleanupTryCall(nil, responses, ch)
 	c.ns.FlushCacheEntry(name)
 	suberrs := []verror.SubErr{}
@@ -660,7 +661,7 @@
 	// will require thinking through all of the cases where the RPC can
 	// be retried by the client whilst it's actually being executed on the
 	// server.
-	return nil, topLevelAction, verror.AddSubErrs(verror.New(topLevelError, ctx), ctx, suberrs...)
+	return nil, topLevelAction, false, verror.AddSubErrs(verror.New(topLevelError, ctx), ctx, suberrs...)
 }
 
 // prepareBlessingsAndDischarges prepares blessings and discharges for
diff --git a/profiles/internal/rpc/stream/benchmark/dial_vc.go b/profiles/internal/rpc/stream/benchmark/dial_vc.go
index a355ade..a78484f 100644
--- a/profiles/internal/rpc/stream/benchmark/dial_vc.go
+++ b/profiles/internal/rpc/stream/benchmark/dial_vc.go
@@ -9,6 +9,7 @@
 	"time"
 
 	"v.io/x/ref/profiles/internal/rpc/stream/manager"
+	"v.io/x/ref/profiles/internal/rpc/stream/vc"
 	_ "v.io/x/ref/profiles/static"
 	"v.io/x/ref/test/benchmark"
 	"v.io/x/ref/test/testutil"
@@ -39,8 +40,8 @@
 		b.Fatal(err)
 	}
 
-	// Warmup to create the underlying VIF.
-	_, err = client.Dial(ep, principal)
+	// Create one VC to prevent the underlying VIF from being closed.
+	_, err = client.Dial(ep, principal, vc.IdleTimeout{0})
 	if err != nil {
 		b.Fatal(err)
 	}
@@ -51,7 +52,7 @@
 		b.StartTimer()
 		start := time.Now()
 
-		_, err := client.Dial(ep, principal)
+		VC, err := client.Dial(ep, principal)
 		if err != nil {
 			b.Fatal(err)
 		}
@@ -61,7 +62,7 @@
 
 		stats.Add(duration)
 
-		client.ShutdownEndpoint(ep)
+		VC.Close(nil)
 	}
 
 	client.Shutdown()
diff --git a/profiles/internal/rpc/stream/model.go b/profiles/internal/rpc/stream/model.go
index 446fd86..baf4077 100644
--- a/profiles/internal/rpc/stream/model.go
+++ b/profiles/internal/rpc/stream/model.go
@@ -105,6 +105,10 @@
 type VC interface {
 	Connector
 	Listen() (Listener, error)
+
+	// Close closes the VC and all flows on it, allowing any pending writes in
+	// flows to drain.
+	Close(reason error) error
 }
 
 // VCOpt is the interface for all VC options.
diff --git a/profiles/internal/rpc/stream/vc/vc.go b/profiles/internal/rpc/stream/vc/vc.go
index ec8e694..d15482d 100644
--- a/profiles/internal/rpc/stream/vc/vc.go
+++ b/profiles/internal/rpc/stream/vc/vc.go
@@ -413,8 +413,6 @@
 	f.Release(int(bytes))
 }
 
-// Close closes the VC and all flows on it, allowing any pending writes in the
-// flow to drain.
 func (vc *VC) Close(reason error) error {
 	vlog.VI(1).Infof("Closing VC %v. Reason:%q", vc, reason)
 	vc.mu.Lock()
diff --git a/services/device/device/acl_test.go b/services/device/device/acl_test.go
index e8a3449..bf51feb 100644
--- a/services/device/device/acl_test.go
+++ b/services/device/device/acl_test.go
@@ -58,7 +58,7 @@
 	}})
 
 	if err := cmd.Execute([]string{"acl", "get", deviceName}); err != nil {
-		t.Fatalf("%v, output: %v, error: %v", err)
+		t.Fatalf("error: %v", err)
 	}
 	if expected, got := strings.TrimSpace(`
 other Read
diff --git a/services/wspr/browsprd/main_nacl.go b/services/wspr/browsprd/main_nacl.go
index 6ef3a7d..98758bc 100644
--- a/services/wspr/browsprd/main_nacl.go
+++ b/services/wspr/browsprd/main_nacl.go
@@ -23,9 +23,11 @@
 	"v.io/x/ref/profiles/internal/lib/websocket"
 	"v.io/x/ref/services/wspr/internal/browspr"
 	"v.io/x/ref/services/wspr/internal/channel/channel_nacl"
+	"v.io/x/ref/services/wspr/internal/rpc/server"
 )
 
 func main() {
+	security.OverrideCaveatValidation(server.CaveatValidation)
 	ppapi.Init(newBrowsprInstance)
 }
 
diff --git a/services/wspr/internal/rpc/server/server.go b/services/wspr/internal/rpc/server/server.go
index 6769ed3..02e05e7 100644
--- a/services/wspr/internal/rpc/server/server.go
+++ b/services/wspr/internal/rpc/server/server.go
@@ -98,6 +98,8 @@
 	statusClose chan struct{}
 }
 
+type serverContextKey struct{}
+
 func NewServer(id uint32, listenSpec *rpc.ListenSpec, helper ServerHelper) (*Server, error) {
 	server := &Server{
 		id:                            id,
@@ -109,7 +111,7 @@
 	}
 	var err error
 	ctx := helper.Context()
-	ctx = context.WithValue(ctx, "customChainValidator", server.wsprCaveatValidator)
+	ctx = context.WithValue(ctx, serverContextKey{}, server)
 	if server.server, err = v23.NewServer(ctx); err != nil {
 		return nil, err
 	}
@@ -343,9 +345,24 @@
 	return errs
 }
 
-// validateCavsInJavascript validates caveats in javascript.
-// It resolves each []security.Caveat in cavs to an error (or nil) and collects them in a slice.
-func (s *Server) validateCavsInJavascript(ctx *context.T, call security.Call, cavs [][]security.Caveat) []error {
+// caveatValidationInGo validates caveats in Go, using the default logic.
+func caveatValidationInGo(ctx *context.T, call security.Call, sets [][]security.Caveat) []error {
+	results := make([]error, len(sets))
+	for i, set := range sets {
+		for _, cav := range set {
+			if err := cav.Validate(ctx, call); err != nil {
+				results[i] = err
+				break
+			}
+		}
+	}
+	return results
+}
+
+// caveatValidationInJavascript validates caveats in javascript.  It resolves
+// each []security.Caveat in cavs to an error (or nil) and collects them in a
+// slice.
+func (s *Server) caveatValidationInJavascript(ctx *context.T, call security.Call, cavs [][]security.Caveat) []error {
 	flow := s.helper.CreateNewFlow(s, nil)
 	req := CaveatValidationRequest{
 		Call: ConvertSecurityCall(s.helper, ctx, call, false),
@@ -388,10 +405,19 @@
 	}
 }
 
-// wsprCaveatValidator validates caveats for javascript.
-// Certain caveats (PublicKeyThirdPartyCaveatX) are intercepted and handled in go.
-// This call validateCavsInJavascript to process the remaining caveats in javascript.
-func (s *Server) wsprCaveatValidator(ctx *context.T, call security.Call, cavs [][]security.Caveat) []error {
+// CaveatValidation implements a function suitable for passing to
+// security.OverrideCaveatValidation.
+//
+// Certain caveats (PublicKeyThirdPartyCaveatX) are intercepted and handled in
+// go, while all other caveats are evaluated in javascript.
+func CaveatValidation(ctx *context.T, call security.Call, cavs [][]security.Caveat) []error {
+	// If the server isn't set in the context, we just perform validation in Go.
+	ctxServer := ctx.Value(serverContextKey{})
+	if ctxServer == nil {
+		return caveatValidationInGo(ctx, call, cavs)
+	}
+	// Otherwise we run our special logic.
+	server := ctxServer.(*Server)
 	type validationStatus struct {
 		err   error
 		isSet bool
@@ -406,7 +432,7 @@
 			// If the server is closed handle all caveats in Go, because Javascript is
 			// no longer there.
 			select {
-			case <-s.statusClose:
+			case <-server.statusClose:
 				res := cav.Validate(ctx, call)
 				if res != nil {
 					valStatus[i] = validationStatus{
@@ -441,7 +467,7 @@
 		}
 	}
 
-	jsRes := s.validateCavsInJavascript(ctx, call, caveatChainsToValidate)
+	jsRes := server.caveatValidationInJavascript(ctx, call, caveatChainsToValidate)
 
 	outResults := make([]error, len(cavs))
 	jsIndex := 0
diff --git a/services/wspr/wsprd/main.go b/services/wspr/wsprd/main.go
index c5e7068..edc46c8 100644
--- a/services/wspr/wsprd/main.go
+++ b/services/wspr/wsprd/main.go
@@ -2,6 +2,11 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build wspr
+//
+// We restrict wsprd to a special build-tag in order to enable
+// security.OverrideCaveatValidation, which isn't generally available.
+
 // Daemon wsprd implements the wspr web socket proxy as a stand-alone server.
 package main
 
@@ -11,7 +16,6 @@
 	"net"
 
 	"v.io/v23"
-
 	"v.io/x/ref/lib/signals"
 	// TODO(cnicolaou,benj): figure out how to support roaming as a chrome plugin
 	_ "v.io/x/ref/profiles/roaming"
@@ -19,6 +23,7 @@
 )
 
 func main() {
+	wsprlib.OverrideCaveatValidation()
 	port := flag.Int("port", 8124, "Port to listen on.")
 	identd := flag.String("identd", "", "name of identd server.")
 
diff --git a/services/wspr/wsprlib/override.go b/services/wspr/wsprlib/override.go
new file mode 100644
index 0000000..4eb3074
--- /dev/null
+++ b/services/wspr/wsprlib/override.go
@@ -0,0 +1,21 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build wspr
+//
+// We restrict to a special build-tag in order to enable
+// security.OverrideCaveatValidation, which isn't generally available.
+
+package wsprlib
+
+import (
+	"v.io/v23/security"
+	"v.io/x/ref/services/wspr/internal/rpc/server"
+)
+
+// OverrideCaveatValidation overrides caveat validation.  This must be called in
+// order for wspr to be able to delegate caveat validation to javascript.
+func OverrideCaveatValidation() {
+	security.OverrideCaveatValidation(server.CaveatValidation)
+}
diff --git a/test/v23tests/v23tests.go b/test/v23tests/v23tests.go
index 1c40daa..8945296 100644
--- a/test/v23tests/v23tests.go
+++ b/test/v23tests/v23tests.go
@@ -403,41 +403,46 @@
 	}
 }
 
-// BuildGoPkg expects a Go package path that identifies a "main" package and
-// returns a Binary representing the newly built binary. This binary does not
-// use the exec protocol defined in v.io/x/ref/lib/exec and in particular will
-// not have access to the security agent or any other shared file descriptors.
-// Environment variables and command line arguments are the only means of
-// communicating with the invocations of this binary.
+// BuildGoPkg expects a Go package path that identifies a "main" package, and
+// any build flags to pass to "go build", and returns a Binary representing the
+// newly built binary.
+//
+// The resulting binary is assumed to not use the exec protocol defined in
+// v.io/x/ref/lib/exec and in particular will not have access to the security
+// agent or any other shared file descriptors.  Environment variables and
+// command line arguments are the only means of communicating with the
+// invocations of this binary.
+//
 // Use this for non-Vanadium command-line tools and servers.
-func (t *T) BuildGoPkg(pkg string) *Binary {
-	return t.buildPkg(pkg)
+func (t *T) BuildGoPkg(pkg string, flags ...string) *Binary {
+	return t.buildPkg(pkg, flags...)
 }
 
-// BuildV23 is like BuildGoPkg, but instead assumes that the resulting
-// binary is a Vanadium application and does implement the exec protocol
-// defined in v.io/x/ref/lib/exec. The invocations of this binary will
-// have access to the security agent configured for the parent process, to
-// shared file descriptors, the config shared by the exec package.
+// BuildV23 is like BuildGoPkg, but instead assumes that the resulting binary is
+// a Vanadium application and does implement the exec protocol defined in
+// v.io/x/ref/lib/exec.  The invocations of this binary will have access to the
+// security agent configured for the parent process, to shared file descriptors,
+// the config shared by the exec package.
+//
 // Use this for Vanadium servers. Note that some vanadium client only binaries,
-// that do not call v23.Init and hence do not implement the exec protocol
-// cannot be used via BuildV23Pkg.
-func (t *T) BuildV23Pkg(pkg string) *Binary {
-	b := t.buildPkg(pkg)
+// that do not call v23.Init and hence do not implement the exec protocol cannot
+// be used via BuildV23Pkg.
+func (t *T) BuildV23Pkg(pkg string, flags ...string) *Binary {
+	b := t.buildPkg(pkg, flags...)
 	b.opts = t.shell.DefaultStartOpts().ExternalCommand()
 	return b
 }
 
-func (t *T) buildPkg(pkg string) *Binary {
+func (t *T) buildPkg(pkg string, flags ...string) *Binary {
 	then := time.Now()
 	loc := Caller(1)
-	cached, built_path, err := buildPkg(t, t.BinDir(), pkg)
+	cached, built_path, err := buildPkg(t, t.BinDir(), pkg, flags)
 	if err != nil {
-		t.Fatalf("%s: buildPkg(%s) failed: %v", loc, pkg, err)
+		t.Fatalf("%s: buildPkg(%s, %v) failed: %v", loc, pkg, flags, err)
 		return nil
 	}
 	if _, err := os.Stat(built_path); err != nil {
-		t.Fatalf("%s: buildPkg(%s) failed to stat %q", loc, pkg, built_path)
+		t.Fatalf("%s: buildPkg(%s, %v) failed to stat %q", loc, pkg, flags, built_path)
 	}
 	taken := time.Now().Sub(then)
 	if cached {
@@ -551,14 +556,14 @@
 	return t.binDir
 }
 
-// BuildPkg returns a path to a directory that contains the built binary for
+// buildPkg returns a path to a directory that contains the built binary for
 // the given packages and a function that should be invoked to clean up the
 // build artifacts. Note that the clients of this function should not modify
 // the contents of this directory directly and instead defer to the cleanup
 // function.
-func buildPkg(t *T, binDir, pkg string) (bool, string, error) {
+func buildPkg(t *T, binDir, pkg string, flags []string) (bool, string, error) {
 	binFile := filepath.Join(binDir, path.Base(pkg))
-	vlog.Infof("buildPkg: %v .. %v", binDir, pkg)
+	vlog.Infof("buildPkg: %v .. %v %v", binDir, pkg, flags)
 	if _, err := os.Stat(binFile); err != nil {
 		if !os.IsNotExist(err) {
 			return false, "", err
@@ -571,7 +576,10 @@
 		defer os.RemoveAll(tmpdir)
 		uniqueBinFile := filepath.Join(tmpdir, baseName)
 
-		cmd := exec.Command("v23", "go", "build", "-x", "-o", uniqueBinFile, pkg)
+		buildArgs := []string{"go", "build", "-x", "-o", uniqueBinFile}
+		buildArgs = append(buildArgs, flags...)
+		buildArgs = append(buildArgs, pkg)
+		cmd := exec.Command("v23", buildArgs...)
 		if output, err := cmd.CombinedOutput(); err != nil {
 			vlog.VI(1).Infof("\n%v:\n%v\n", strings.Join(cmd.Args, " "), string(output))
 			return false, "", err