benchproc: add an end-to-end example

Change-Id: I4c401c43b1255ded311bede92ce70fc8f7f5feaf
Reviewed-on: https://go-review.googlesource.com/c/perf/+/355169
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
diff --git a/benchproc/example_test.go b/benchproc/example_test.go
new file mode 100644
index 0000000..04a8adb
--- /dev/null
+++ b/benchproc/example_test.go
@@ -0,0 +1,141 @@
+// Copyright 2021 The Go 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 benchproc
+
+import (
+	"fmt"
+	"log"
+	"os"
+
+	"golang.org/x/perf/benchfmt"
+	"golang.org/x/perf/benchunit"
+)
+
+// Example shows a complete benchmark processing pipeline that uses
+// filtering, projection, accumulation, and sorting.
+func Example() {
+	// Open the example benchmark data.
+	f, err := os.Open("testdata/suffixarray.bench")
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer f.Close()
+
+	// Create a filter that extracts just "BenchmarkNew" on the value
+	// "go" of the name key "text". Typically, the filter expression
+	// would come from a command-line flag.
+	filter, err := NewFilter(".name:New /text:go")
+	if err != nil {
+		log.Fatal(err)
+	}
+	// Create a projection. This projection extracts "/bits=" and
+	// "/size=" from the benchmark name. It sorts bits in the
+	// default, first-observation order and size numerically.
+	// Typically, the projection expression would come from a
+	// command-line flag.
+	var pp ProjectionParser
+	projection, err := pp.Parse("/bits,/size@num", filter)
+	if err != nil {
+		log.Fatal(err)
+	}
+	// Create a projection that captures all configuration not
+	// captured by the above projection. We'll use this to check
+	// if there's unexpected variation in other configuration
+	// fields and report it.
+	residue := pp.Residue()
+
+	// We'll accumulate benchmark results by their projection.
+	// Projections create Keys, which are == if the projected
+	// values are ==, so they can be used as map keys.
+	bySize := make(map[Key][]float64)
+	var keys []Key
+	var residues []Key
+
+	// Read the benchmark results.
+	r := benchfmt.NewReader(f, "example")
+	for r.Scan() {
+		var res *benchfmt.Result
+		switch rec := r.Result(); rec := rec.(type) {
+		case *benchfmt.Result:
+			res = rec
+		case *benchfmt.SyntaxError:
+			// Report a non-fatal parse error.
+			log.Print(err)
+			continue
+		default:
+			// Unknown record type. Ignore.
+			continue
+		}
+
+		// Step 1: If necessary, transform the Result, for example to
+		// add configuration keys that could be used in filters and
+		// projections. This example doesn't need any transformation.
+
+		// Step 2: Filter the result.
+		if match, err := filter.Apply(res); !match {
+			// Result was fully excluded by the filter.
+			if err != nil {
+				// Print the reason we rejected this result.
+				log.Print(err)
+			}
+			continue
+		}
+
+		// Step 3: Project the result. This produces a Key
+		// that captures the "size" and "bits" from the result.
+		key := projection.Project(res)
+
+		// Accumulate the results by configuration.
+		speed, ok := res.Value("sec/op")
+		if !ok {
+			continue
+		}
+		if _, ok := bySize[key]; !ok {
+			keys = append(keys, key)
+		}
+		bySize[key] = append(bySize[key], speed)
+
+		// Collect residue configurations.
+		resConfig := residue.Project(res)
+		residues = append(residues, resConfig)
+	}
+	// Check for I/O errors.
+	if err := r.Err(); err != nil {
+		log.Fatal(err)
+	}
+
+	// Step 4: Sort the collected configurations using the order
+	// specified by the projection.
+	SortKeys(keys)
+
+	// Print the results.
+	fmt.Printf("%-24s %s\n", "config", "sec/op")
+	for _, config := range keys {
+		fmt.Printf("%-24s %s\n", config, benchunit.Scale(mean(bySize[config]), benchunit.Decimal))
+	}
+
+	// Check if there was variation in any other configuration
+	// fields that wasn't captured by the projection and warn the
+	// user that something may be unexpected.
+	nonsingular := NonSingularFields(residues)
+	if len(nonsingular) > 0 {
+		fmt.Printf("warning: results vary in %s\n", nonsingular)
+	}
+
+	// Output:
+	// config                   sec/op
+	// /bits:32 /size:100K      4.650m
+	// /bits:32 /size:500K      26.18m
+	// /bits:32 /size:1M        51.39m
+	// /bits:32 /size:5M        306.7m
+	// /bits:32 /size:10M       753.0m
+	// /bits:32 /size:50M       5.814
+	// /bits:64 /size:100K      5.081m
+	// /bits:64 /size:500K      26.43m
+	// /bits:64 /size:1M        55.60m
+	// /bits:64 /size:5M        366.6m
+	// /bits:64 /size:10M       821.2m
+	// /bits:64 /size:50M       6.390
+}
diff --git a/benchproc/testdata/suffixarray.bench b/benchproc/testdata/suffixarray.bench
new file mode 100644
index 0000000..22ab686
--- /dev/null
+++ b/benchproc/testdata/suffixarray.bench
@@ -0,0 +1,426 @@
+goos: linux
+goarch: amd64
+pkg: index/suffixarray
+cpu: Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     295	   4052123 ns/op	  24.68 MB/s	  401490 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     297	   4072122 ns/op	  24.56 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     295	   4236652 ns/op	  23.60 MB/s	  401489 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     279	   4033154 ns/op	  24.79 MB/s	  401489 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     295	   4039300 ns/op	  24.76 MB/s	  401490 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     295	   4047106 ns/op	  24.71 MB/s	  401489 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     296	   4080614 ns/op	  24.51 MB/s	  401489 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     292	   4628050 ns/op	  21.61 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     250	   4858420 ns/op	  20.58 MB/s	  401495 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=32-8 	     246	   4775885 ns/op	  20.94 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     250	   5146381 ns/op	  19.43 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     220	   5213987 ns/op	  19.18 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     217	   5291964 ns/op	  18.90 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     235	   5068398 ns/op	  19.73 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     235	   4938145 ns/op	  20.25 MB/s	  802898 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     238	   5148271 ns/op	  19.42 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     246	   5338211 ns/op	  18.73 MB/s	  802899 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     188	   5824187 ns/op	  17.17 MB/s	  802901 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     217	   5060742 ns/op	  19.76 MB/s	  802897 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=100K/bits=64-8 	     235	   5217341 ns/op	  19.17 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      44	  27085295 ns/op	  18.46 MB/s	 2007124 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      44	  26814050 ns/op	  18.65 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      40	  26639687 ns/op	  18.77 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      45	  25644792 ns/op	  19.50 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      45	  27397701 ns/op	  18.25 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      44	  26078039 ns/op	  19.17 MB/s	 2007124 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      48	  25371753 ns/op	  19.71 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      44	  26175214 ns/op	  19.10 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      43	  27787597 ns/op	  17.99 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=32-8 	      38	  26538644 ns/op	  18.84 MB/s	 2007125 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      44	  26520032 ns/op	  18.85 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      43	  26658026 ns/op	  18.76 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      45	  26744339 ns/op	  18.70 MB/s	 4005978 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      43	  27396010 ns/op	  18.25 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      43	  29622068 ns/op	  16.88 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      45	  26382655 ns/op	  18.95 MB/s	 4005974 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      45	  26472702 ns/op	  18.89 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      45	  27309932 ns/op	  18.31 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      43	  28565070 ns/op	  17.50 MB/s	 4005972 B/op	       2 allocs/op
+BenchmarkNew/text=opticks/size=500K/bits=64-8 	      40	  28274915 ns/op	  17.68 MB/s	 4005980 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     249	   4881605 ns/op	  20.49 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     253	   4573302 ns/op	  21.87 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     259	   4588662 ns/op	  21.79 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     252	   4576205 ns/op	  21.85 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     260	   4585606 ns/op	  21.81 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     240	   4812633 ns/op	  20.78 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     258	   4525823 ns/op	  22.10 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     260	   4710165 ns/op	  21.23 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     261	   4604983 ns/op	  21.72 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=32-8      	     261	   4643178 ns/op	  21.54 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     252	   4710485 ns/op	  21.23 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     243	   4699126 ns/op	  21.28 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     253	   4659630 ns/op	  21.46 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     252	   5314740 ns/op	  18.82 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     250	   4715272 ns/op	  21.21 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     253	   4770306 ns/op	  20.96 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     255	   6283260 ns/op	  15.92 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     195	   5975483 ns/op	  16.74 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     247	   4597040 ns/op	  21.75 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=100K/bits=64-8      	     256	   5088847 ns/op	  19.65 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      40	  32395666 ns/op	  15.43 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      33	  30502692 ns/op	  16.39 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      44	  26252125 ns/op	  19.05 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      44	  24853298 ns/op	  20.12 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      49	  25107599 ns/op	  19.91 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      45	  24300527 ns/op	  20.58 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      50	  24283105 ns/op	  20.59 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      49	  24519617 ns/op	  20.39 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      48	  24107192 ns/op	  20.74 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=32-8      	      48	  25517273 ns/op	  19.59 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      45	  25913775 ns/op	  19.29 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      46	  27912582 ns/op	  17.91 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      46	  26413323 ns/op	  18.93 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      43	  25289108 ns/op	  19.77 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      49	  26428054 ns/op	  18.92 MB/s	 4005971 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      48	  25487815 ns/op	  19.62 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      46	  25967433 ns/op	  19.25 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      46	  29337237 ns/op	  17.04 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      46	  26036265 ns/op	  19.20 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=500K/bits=64-8      	      45	  25553536 ns/op	  19.57 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      24	  51425478 ns/op	  19.45 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  51767185 ns/op	  19.32 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  51452839 ns/op	  19.44 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  50866589 ns/op	  19.66 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      21	  51407747 ns/op	  19.45 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      21	  51876409 ns/op	  19.28 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  51469835 ns/op	  19.43 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  50805967 ns/op	  19.68 MB/s	 4005972 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      24	  50459578 ns/op	  19.82 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=32-8        	      22	  52320898 ns/op	  19.11 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      20	  56187019 ns/op	  17.80 MB/s	 8003668 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      19	  56812677 ns/op	  17.60 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      20	  54411271 ns/op	  18.38 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      21	  55917000 ns/op	  17.88 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      21	  55597640 ns/op	  17.99 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      20	  56008349 ns/op	  17.85 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      20	  55588672 ns/op	  17.99 MB/s	 8003668 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      20	  54518537 ns/op	  18.34 MB/s	 8003668 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      22	  55940751 ns/op	  17.88 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=1M/bits=64-8        	      22	  55014032 ns/op	  18.18 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 332500032 ns/op	  15.04 MB/s	20004968 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       3	 353251996 ns/op	  14.15 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 349921178 ns/op	  14.29 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 294152618 ns/op	  17.00 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 290773832 ns/op	  17.20 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 290526001 ns/op	  17.21 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 285712518 ns/op	  17.50 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 287040332 ns/op	  17.42 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 294170112 ns/op	  17.00 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=32-8        	       4	 288948377 ns/op	  17.30 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 347369765 ns/op	  14.39 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 348656080 ns/op	  14.34 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 343344497 ns/op	  14.56 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 339587446 ns/op	  14.72 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 349482818 ns/op	  14.31 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 343871324 ns/op	  14.54 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       2	 551044062 ns/op	   9.07 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 340988269 ns/op	  14.66 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 352658010 ns/op	  14.18 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=5M/bits=64-8        	       3	 349263921 ns/op	  14.32 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 769239168 ns/op	  13.00 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 855846617 ns/op	  11.68 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 675556240 ns/op	  14.80 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 660881035 ns/op	  15.13 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 823746216 ns/op	  12.14 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 754494396 ns/op	  13.25 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 700564396 ns/op	  14.27 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 811829414 ns/op	  12.32 MB/s	40001664 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 761807961 ns/op	  13.13 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=32-8       	       2	 715951036 ns/op	  13.97 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 849797874 ns/op	  11.77 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 875582536 ns/op	  11.42 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 896566918 ns/op	  11.15 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 825580619 ns/op	  12.11 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 770837676 ns/op	  12.97 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 773857370 ns/op	  12.92 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 775843330 ns/op	  12.89 MB/s	80003200 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 796792699 ns/op	  12.55 MB/s	80003248 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 856954845 ns/op	  11.67 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=10M/bits=64-8       	       2	 790255348 ns/op	  12.65 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5812724632 ns/op	   8.60 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5768740575 ns/op	   8.67 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5896708111 ns/op	   8.48 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5798423865 ns/op	   8.62 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5573826077 ns/op	   8.97 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5809735517 ns/op	   8.61 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5630933800 ns/op	   8.88 MB/s	200007952 B/op	       4 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5844267122 ns/op	   8.56 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	5739167129 ns/op	   8.71 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=32-8       	       1	6263358054 ns/op	   7.98 MB/s	200007856 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	6772392325 ns/op	   7.38 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	6485886352 ns/op	   7.71 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	6933794281 ns/op	   7.21 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	7136956950 ns/op	   7.01 MB/s	400007344 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	6560863302 ns/op	   7.62 MB/s	400007256 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	6481320454 ns/op	   7.71 MB/s	400007256 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	5898827051 ns/op	   8.48 MB/s	400007344 B/op	       3 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	5854312315 ns/op	   8.54 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	5910294273 ns/op	   8.46 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=go/size=50M/bits=64-8       	       1	5865809619 ns/op	   8.52 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1484	    727405 ns/op	 137.48 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1665	    715978 ns/op	 139.67 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1664	    707566 ns/op	 141.33 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1694	    714422 ns/op	 139.97 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1692	    705436 ns/op	 141.76 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1706	    706477 ns/op	 141.55 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1630	    721169 ns/op	 138.66 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1596	    741468 ns/op	 134.87 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1616	    731019 ns/op	 136.80 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=32-8    	    1597	    795787 ns/op	 125.66 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1549	    778274 ns/op	 128.49 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1528	    807422 ns/op	 123.85 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1520	    793356 ns/op	 126.05 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1555	    777911 ns/op	 128.55 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1398	    764437 ns/op	 130.82 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1563	    789823 ns/op	 126.61 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1538	    762874 ns/op	 131.08 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1522	    772133 ns/op	 129.51 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1425	    768312 ns/op	 130.16 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=100K/bits=64-8    	    1545	    845637 ns/op	 118.25 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     312	   3639917 ns/op	 137.37 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     327	   3698585 ns/op	 135.19 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     302	   3876299 ns/op	 128.99 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     237	   5522154 ns/op	  90.54 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     309	   3701258 ns/op	 135.09 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     338	   3586236 ns/op	 139.42 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     331	   3520665 ns/op	 142.02 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     313	   3552518 ns/op	 140.75 MB/s	 2007121 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     332	   3726036 ns/op	 134.19 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=32-8    	     336	   3701852 ns/op	 135.07 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     304	   3863971 ns/op	 129.40 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     297	   3806994 ns/op	 131.34 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     297	   3893789 ns/op	 128.41 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     309	   3995320 ns/op	 125.15 MB/s	 4005969 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     313	   3934741 ns/op	 127.07 MB/s	 4005969 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     309	   3995117 ns/op	 125.15 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     295	   4026636 ns/op	 124.17 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     290	   3922376 ns/op	 127.47 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     309	   3969820 ns/op	 125.95 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=500K/bits=64-8    	     315	   3936517 ns/op	 127.02 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     168	   7515882 ns/op	 133.05 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     148	   7550817 ns/op	 132.44 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     166	   7357208 ns/op	 135.92 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     158	   7246776 ns/op	 137.99 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     169	   7238432 ns/op	 138.15 MB/s	 4005969 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     166	   7174621 ns/op	 139.38 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     163	   7276260 ns/op	 137.43 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     162	   6966149 ns/op	 143.55 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     159	   6980433 ns/op	 143.26 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=32-8      	     158	   7215231 ns/op	 138.60 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     141	   7916198 ns/op	 126.32 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     147	   7791251 ns/op	 128.35 MB/s	 8003665 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     144	   7758872 ns/op	 128.88 MB/s	 8003666 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     147	   7747113 ns/op	 129.08 MB/s	 8003665 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     150	   7705199 ns/op	 129.78 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     150	   7723185 ns/op	 129.48 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     150	   8190293 ns/op	 122.10 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     139	   7791215 ns/op	 128.35 MB/s	 8003665 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     150	   7725553 ns/op	 129.44 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=1M/bits=64-8      	     151	   7747238 ns/op	 129.08 MB/s	 8003665 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      32	  37332589 ns/op	 133.93 MB/s	20004947 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      33	  36437872 ns/op	 137.22 MB/s	20004947 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      31	  37473708 ns/op	 133.43 MB/s	20004947 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      32	  37513925 ns/op	 133.28 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      30	  36379171 ns/op	 137.44 MB/s	20004947 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      32	  38026958 ns/op	 131.49 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      31	  36567303 ns/op	 136.73 MB/s	20004950 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      33	  37774383 ns/op	 132.36 MB/s	20004950 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      31	  37131728 ns/op	 134.66 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=32-8      	      32	  36671976 ns/op	 136.34 MB/s	20004950 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      32	  39037742 ns/op	 128.08 MB/s	40001619 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      31	  38933667 ns/op	 128.42 MB/s	40001619 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      30	  37941873 ns/op	 131.78 MB/s	40001620 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      30	  38945001 ns/op	 128.39 MB/s	40001619 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      31	  37265318 ns/op	 134.17 MB/s	40001625 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      30	  37793802 ns/op	 132.30 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      31	  42996058 ns/op	 116.29 MB/s	40001619 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      28	  38175289 ns/op	 130.97 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      31	  38047029 ns/op	 131.42 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=5M/bits=64-8      	      31	  47418258 ns/op	 105.44 MB/s	40001622 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      15	  71354646 ns/op	 140.15 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      15	  71505654 ns/op	 139.85 MB/s	40001622 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      16	  71271033 ns/op	 140.31 MB/s	40001617 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      16	  69770852 ns/op	 143.33 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      16	  72129407 ns/op	 138.64 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      16	  70662213 ns/op	 141.52 MB/s	40001622 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      15	  73789524 ns/op	 135.52 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      15	  72695944 ns/op	 137.56 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      15	  70166877 ns/op	 142.52 MB/s	40001622 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=32-8     	      16	  72159965 ns/op	 138.58 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  75123311 ns/op	 133.11 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      14	  75808918 ns/op	 131.91 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  77830632 ns/op	 128.48 MB/s	80003153 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      14	  75492911 ns/op	 132.46 MB/s	80003159 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  76340903 ns/op	 130.99 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  73616399 ns/op	 135.84 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  77304055 ns/op	 129.36 MB/s	80003164 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  76386576 ns/op	 130.91 MB/s	80003164 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  73808334 ns/op	 135.49 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=10M/bits=64-8     	      15	  75785043 ns/op	 131.95 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 381664629 ns/op	 131.01 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 361372237 ns/op	 138.36 MB/s	200007792 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 373009517 ns/op	 134.04 MB/s	200007762 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 359590450 ns/op	 139.05 MB/s	200007794 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 348689051 ns/op	 143.39 MB/s	200007858 B/op	       3 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 355056051 ns/op	 140.82 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 362336814 ns/op	 137.99 MB/s	200007762 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 360951205 ns/op	 138.52 MB/s	200007762 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 365680067 ns/op	 136.73 MB/s	200007794 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=32-8     	       3	 364602240 ns/op	 137.14 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 455524505 ns/op	 109.76 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 402870428 ns/op	 124.11 MB/s	400007250 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 384374359 ns/op	 130.08 MB/s	400007280 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 398524273 ns/op	 125.46 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 399095084 ns/op	 125.28 MB/s	400007250 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 447112676 ns/op	 111.83 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 388833623 ns/op	 128.59 MB/s	400007250 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 380795710 ns/op	 131.30 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 395856899 ns/op	 126.31 MB/s	400007282 B/op	       2 allocs/op
+BenchmarkNew/text=zero/size=50M/bits=64-8     	       3	 394045040 ns/op	 126.89 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     284	   4408977 ns/op	  22.68 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     279	   4406303 ns/op	  22.69 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     279	   4362652 ns/op	  22.92 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     270	   4254645 ns/op	  23.50 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     260	   4336271 ns/op	  23.06 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     276	   4453020 ns/op	  22.46 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     277	   4434743 ns/op	  22.55 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     278	   4345776 ns/op	  23.01 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     271	   4467379 ns/op	  22.38 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=32-8    	     266	   4260844 ns/op	  23.47 MB/s	  401488 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     254	   4955640 ns/op	  20.18 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     241	   4754420 ns/op	  21.03 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     266	   4656703 ns/op	  21.47 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     265	   4631085 ns/op	  21.59 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     261	   4543270 ns/op	  22.01 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     250	   4594390 ns/op	  21.77 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     242	   4567103 ns/op	  21.90 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     264	   4698949 ns/op	  21.28 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     262	   4689148 ns/op	  21.33 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=100K/bits=64-8    	     265	   4596534 ns/op	  21.76 MB/s	  802896 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      44	  24647096 ns/op	  20.29 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      50	  25301072 ns/op	  19.76 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      46	  24031531 ns/op	  20.81 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      50	  25481328 ns/op	  19.62 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      48	  25162863 ns/op	  19.87 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      46	  25544517 ns/op	  19.57 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      46	  25869593 ns/op	  19.33 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      46	  24193446 ns/op	  20.67 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      45	  24104116 ns/op	  20.74 MB/s	 2007122 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=32-8    	      49	  25772794 ns/op	  19.40 MB/s	 2007120 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  27852949 ns/op	  17.95 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  27751979 ns/op	  18.02 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  27290496 ns/op	  18.32 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      36	  28018276 ns/op	  17.85 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  27364653 ns/op	  18.27 MB/s	 4005972 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  26964873 ns/op	  18.54 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      44	  27574712 ns/op	  18.13 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      43	  26820446 ns/op	  18.64 MB/s	 4005970 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      37	  27644329 ns/op	  18.09 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=500K/bits=64-8    	      40	  27746697 ns/op	  18.02 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      19	  53712115 ns/op	  18.62 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  55783194 ns/op	  17.93 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      20	  54828846 ns/op	  18.24 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  55521928 ns/op	  18.01 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  54860538 ns/op	  18.23 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      20	  55811376 ns/op	  17.92 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  55320207 ns/op	  18.08 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      20	  53565863 ns/op	  18.67 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  55678270 ns/op	  17.96 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=32-8      	      21	  55087613 ns/op	  18.15 MB/s	 4005968 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  69047486 ns/op	  14.48 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  70674601 ns/op	  14.15 MB/s	 8003670 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  67324925 ns/op	  14.85 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  71091899 ns/op	  14.07 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  66926829 ns/op	  14.94 MB/s	 8003670 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  72174037 ns/op	  13.86 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  86964283 ns/op	  11.50 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      14	  72005011 ns/op	  13.89 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  67411708 ns/op	  14.83 MB/s	 8003664 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=1M/bits=64-8      	      15	  71361519 ns/op	  14.01 MB/s	 8003670 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 738837715 ns/op	   6.77 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 761109362 ns/op	   6.57 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 763231942 ns/op	   6.55 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 745854286 ns/op	   6.70 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 743247344 ns/op	   6.73 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 710659930 ns/op	   7.04 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 723174605 ns/op	   6.91 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 756145239 ns/op	   6.61 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 733866032 ns/op	   6.81 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=32-8      	       2	 748564354 ns/op	   6.68 MB/s	20004944 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       2	1016575738 ns/op	   4.92 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1042405873 ns/op	   4.80 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       2	 997183992 ns/op	   5.01 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1038265696 ns/op	   4.82 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       2	1002359936 ns/op	   4.99 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1030955285 ns/op	   4.85 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1023955664 ns/op	   4.88 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1039659576 ns/op	   4.81 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       2	 999030534 ns/op	   5.00 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=5M/bits=64-8      	       1	1024534960 ns/op	   4.88 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2416850684 ns/op	   4.14 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2466009580 ns/op	   4.06 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2430925724 ns/op	   4.11 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2461353249 ns/op	   4.06 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2387771124 ns/op	   4.19 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2547479020 ns/op	   3.93 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	3057884074 ns/op	   3.27 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2473146129 ns/op	   4.04 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2668988254 ns/op	   3.75 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=32-8     	       1	2662820183 ns/op	   3.76 MB/s	40001616 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2791136532 ns/op	   3.58 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2763661048 ns/op	   3.62 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2811832311 ns/op	   3.56 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2841755743 ns/op	   3.52 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2831109870 ns/op	   3.53 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2770227888 ns/op	   3.61 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2862421840 ns/op	   3.49 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2987088296 ns/op	   3.35 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2918486027 ns/op	   3.43 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=10M/bits=64-8     	       1	2841186144 ns/op	   3.52 MB/s	80003152 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	19977681872 ns/op	   2.50 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20646546508 ns/op	   2.42 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20074292053 ns/op	   2.49 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20076651502 ns/op	   2.49 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20024358510 ns/op	   2.50 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	19942692561 ns/op	   2.51 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	19958291272 ns/op	   2.51 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20036471306 ns/op	   2.50 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20050417086 ns/op	   2.49 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=32-8     	       1	20003118625 ns/op	   2.50 MB/s	200007760 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	21960608536 ns/op	   2.28 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	21585443360 ns/op	   2.32 MB/s	400007344 B/op	       3 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	21758375298 ns/op	   2.30 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	21593831587 ns/op	   2.32 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	23245984851 ns/op	   2.15 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	19939552270 ns/op	   2.51 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	20251200891 ns/op	   2.47 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	19902268729 ns/op	   2.51 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	19694020826 ns/op	   2.54 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkNew/text=rand/size=50M/bits=64-8     	       1	21201165734 ns/op	   2.36 MB/s	400007248 B/op	       2 allocs/op
+BenchmarkSaveRestore/bits=32-8                	      99	  12350280 ns/op	 338.43 MB/s	 5275651 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	     100	  11937168 ns/op	 350.14 MB/s	 5275650 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	     100	  12955449 ns/op	 322.62 MB/s	 5275649 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	      73	  13942380 ns/op	 299.79 MB/s	 5275650 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	      91	  12913585 ns/op	 323.67 MB/s	 5275650 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	     100	  12052079 ns/op	 346.81 MB/s	 5275649 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	     100	  11991028 ns/op	 348.57 MB/s	 5275648 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	     100	  12614402 ns/op	 331.35 MB/s	 5275651 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	      94	  14026429 ns/op	 297.99 MB/s	 5275651 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=32-8                	      81	  14431203 ns/op	 289.63 MB/s	 5275648 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      69	  17134842 ns/op	 243.93 MB/s	 9469953 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      72	  14022072 ns/op	 298.08 MB/s	 9469954 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      91	  12663109 ns/op	 330.07 MB/s	 9469953 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      93	  13233481 ns/op	 315.84 MB/s	 9469953 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      79	  14574223 ns/op	 286.79 MB/s	 9469954 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      82	  14464183 ns/op	 288.97 MB/s	 9469952 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      87	  12960060 ns/op	 322.51 MB/s	 9469955 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      93	  12684501 ns/op	 329.51 MB/s	 9469955 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      93	  14241606 ns/op	 293.49 MB/s	 9469954 B/op	       4 allocs/op
+BenchmarkSaveRestore/bits=64-8                	      91	  12699273 ns/op	 329.13 MB/s	 9469954 B/op	       4 allocs/op
+PASS
+ok  	index/suffixarray	1167.808s