diff --git a/cmd/benchdiff/internal/benchdiff.go b/cmd/benchdiff/internal/benchdiff.go index 13f4305..f9de83c 100644 --- a/cmd/benchdiff/internal/benchdiff.go +++ b/cmd/benchdiff/internal/benchdiff.go @@ -46,21 +46,6 @@ func fileExists(path string) bool { return true } -func (c *Benchdiff) gitRunner() *gitRunner { - return &gitRunner{ - gitExecutable: c.GitCmd, - repoPath: c.Path, - } -} - -func (c *Benchdiff) baseRefRunner() *refRunner { - gr := c.gitRunner() - return &refRunner{ - ref: c.BaseRef, - gitRunner: *gr, - } -} - func (c *Benchdiff) cacheKey() string { var b []byte b = append(b, []byte(c.BenchCmd)...) @@ -70,6 +55,11 @@ func (c *Benchdiff) cacheKey() string { } func (c *Benchdiff) runBenchmarks() (result *runBenchmarksResults, err error) { + gitCmd := c.GitCmd + if gitCmd == "" { + gitCmd = "git" + } + result = new(runBenchmarksResults) worktreeFilename := filepath.Join(c.ResultsDir, "benchdiff-worktree.out") worktreeFile, err := os.Create(worktreeFilename) @@ -91,19 +81,21 @@ func (c *Benchdiff) runBenchmarks() (result *runBenchmarksResults, err error) { return nil, err } - headSHA, err := c.gitRunner().getRefSha("HEAD") + headSHA, err := runGitCmd(gitCmd, c.Path, "rev-parse", "HEAD") if err != nil { return nil, err } - baseSHA, err := c.gitRunner().getRefSha(c.BaseRef) + result.headSHA = strings.TrimSpace(string(headSHA)) + + baseSHA, err := runGitCmd(gitCmd, c.Path, "rev-parse", c.BaseRef) if err != nil { return nil, err } + result.baseSHA = strings.TrimSpace(string(baseSHA)) baseFilename := fmt.Sprintf("benchdiff-%s-%s.out", baseSHA, c.cacheKey()) baseFilename = filepath.Join(c.ResultsDir, baseFilename) - result.headSHA = headSHA - result.baseSHA = baseSHA + result.baseOutputFile = baseFilename result.worktreeOutputFile = worktreeFilename @@ -126,7 +118,7 @@ func (c *Benchdiff) runBenchmarks() (result *runBenchmarksResults, err error) { baseCmd.Stdout = baseFile var baseCmdErr error - err = c.baseRefRunner().run(func() { + err = runAtGitRef(gitCmd, c.Path, c.BaseRef, func() { baseCmdErr = baseCmd.Run() }) if err != nil { diff --git a/cmd/benchdiff/internal/benchdiff_test.go b/cmd/benchdiff/internal/benchdiff_test.go index ac80ef8..fa1246e 100644 --- a/cmd/benchdiff/internal/benchdiff_test.go +++ b/cmd/benchdiff/internal/benchdiff_test.go @@ -40,11 +40,12 @@ func testInDir(t *testing.T, dir string) { }) } -func TestBenchstat_Run(t *testing.T) { +func TestBenchdiff_Run(t *testing.T) { dir := tmpDir(t) setupTestRepo(t, dir) testInDir(t, dir) differ := Benchdiff{ + GitCmd: "git", BenchCmd: "go", BenchArgs: "test -bench . -benchmem -count 10 -benchtime 10x .", ResultsDir: "./tmp", diff --git a/cmd/benchdiff/internal/gitrunner.go b/cmd/benchdiff/internal/gitrunner.go index 2b054fb..9bd4981 100644 --- a/cmd/benchdiff/internal/gitrunner.go +++ b/cmd/benchdiff/internal/gitrunner.go @@ -7,28 +7,10 @@ import ( "path/filepath" ) -type gitRunner struct { - repoPath string - gitExecutable string -} - -func (r *gitRunner) getRefSha(ref string) (string, error) { - b, err := r.run("rev-parse", ref) - if err != nil { - return "", err - } - b = bytes.TrimSpace(b) - return string(b), nil -} - -func (r *gitRunner) run(args ...string) ([]byte, error) { - executable := "git" - if r.gitExecutable != "" { - executable = r.gitExecutable - } - cmd := exec.Command(executable, args...) //nolint:gosec // this is fine +func runGitCmd(gitCmd, repoPath string, args ...string) ([]byte, error) { + cmd := exec.Command(gitCmd, args...) //nolint:gosec // this is fine var err error - cmd.Dir, err = filepath.Abs(r.repoPath) + cmd.Dir, err = filepath.Abs(repoPath) if err != nil { return nil, err } @@ -37,43 +19,39 @@ func (r *gitRunner) run(args ...string) ([]byte, error) { if exitErr, ok := err.(*exec.ExitError); ok { err = fmt.Errorf("error running git command: %s", string(exitErr.Stderr)) } + b = bytes.TrimSpace(b) return b, err } -type refRunner struct { - gitRunner gitRunner - ref string -} - -func (r *refRunner) stashAndReset() (revert func() error, err error) { +func stashAndReset(gitCmd, repoPath string) (revert func() error, err error) { revert = func() error { return nil } - stash, err := r.gitRunner.run("stash", "create", "--quiet") + stash, err := runGitCmd(gitCmd, repoPath, "stash", "create", "--quiet") if err != nil { return nil, err } stash = bytes.TrimSpace(stash) if len(stash) > 0 { revert = func() error { - _, revertErr := r.gitRunner.run("stash", "apply", "--quiet", string(stash)) + _, revertErr := runGitCmd(gitCmd, repoPath, "stash", "apply", "--quiet", string(stash)) return revertErr } } - _, err = r.gitRunner.run("reset", "--hard", "--quiet") + _, err = runGitCmd(gitCmd, repoPath, "reset", "--hard", "--quiet") if err != nil { return nil, err } return revert, nil } -func (r *refRunner) run(fn func()) error { - origRef, err := r.gitRunner.run("rev-parse", "--abbrev-ref", "HEAD") +func runAtGitRef(gitCmd, repoPath, ref string, fn func()) error { + origRef, err := runGitCmd(gitCmd, repoPath, "rev-parse", "--abbrev-ref", "HEAD") if err != nil { return err } origRef = bytes.TrimSpace(origRef) - unstash, err := r.stashAndReset() + unstash, err := stashAndReset(gitCmd, repoPath) if err != nil { return err } @@ -83,12 +61,12 @@ func (r *refRunner) run(fn func()) error { panic(unstashErr) } }() - _, err = r.gitRunner.run("checkout", "--quiet", r.ref) + _, err = runGitCmd(gitCmd, repoPath, "checkout", "--quiet", ref) if err != nil { return err } defer func() { - _, cerr := r.gitRunner.run("checkout", "--quiet", string(origRef)) + _, cerr := runGitCmd(gitCmd, repoPath, "checkout", "--quiet", string(origRef)) if cerr != nil { if exitErr, ok := cerr.(*exec.ExitError); ok { fmt.Println(string(exitErr.Stderr)) diff --git a/cmd/benchdiff/internal/gitrunner_test.go b/cmd/benchdiff/internal/gitrunner_test.go index 079145c..42374fb 100644 --- a/cmd/benchdiff/internal/gitrunner_test.go +++ b/cmd/benchdiff/internal/gitrunner_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" ) -func Test_refRunner_run(t *testing.T) { +func Test_runAtGitRef(t *testing.T) { dir := tmpDir(t) fooPath := filepath.Join(dir, "foo") err := ioutil.WriteFile(fooPath, []byte("OG content"), 0o600) @@ -30,13 +30,7 @@ func Test_refRunner_run(t *testing.T) { require.NoError(t, err) require.Equal(t, "OG content", string(got)) } - runner := &refRunner{ - ref: "HEAD", - gitRunner: gitRunner{ - repoPath: dir, - }, - } - err = runner.run(fn) + err = runAtGitRef("git", dir, "HEAD", fn) require.NoError(t, err) got, err := ioutil.ReadFile(fooPath) require.NoError(t, err) diff --git a/cmd/benchdiff/internal/testutil_test.go b/cmd/benchdiff/internal/testutil_test.go index da30deb..2298efd 100644 --- a/cmd/benchdiff/internal/testutil_test.go +++ b/cmd/benchdiff/internal/testutil_test.go @@ -29,21 +29,22 @@ func tmpDir(t *testing.T) string { return tmpdir } -func mustSetEnv(t *testing.T, key, value string) { +func mustSetEnv(t *testing.T, env map[string]string) { t.Helper() - assert.NoError(t, os.Setenv(key, value)) + for k, v := range env { + assert.NoError(t, os.Setenv(k, v)) + } } func mustGit(t *testing.T, repoPath string, args ...string) []byte { t.Helper() - mustSetEnv(t, "GIT_AUTHOR_NAME", "author") - mustSetEnv(t, "GIT_AUTHOR_EMAIL", "author@localhost") - mustSetEnv(t, "GIT_COMMITTER_NAME", "committer") - mustSetEnv(t, "GIT_COMMITTER_EMAIL", "committer@localhost") - runner := &gitRunner{ - repoPath: repoPath, - } - got, err := runner.run(args...) + mustSetEnv(t, map[string]string{ + "GIT_AUTHOR_NAME": "author", + "GIT_AUTHOR_EMAIL": "author@localhost", + "GIT_COMMITTER_NAME": "committer", + "GIT_COMMITTER_EMAIL": "committer@localhost", + }) + got, err := runGitCmd("git", repoPath, args...) assert.NoErrorf(t, err, "error running git:\noutput: %v", string(got)) return got } diff --git a/go.sum b/go.sum index 4419d43..6f8d534 100644 --- a/go.sum +++ b/go.sum @@ -33,6 +33,7 @@ golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAG golang.org/x/perf v0.0.0-20201207232921-bdcc6220ee90 h1:P+M61+mQKVHzooHFlNUTNBfj+TqHiQOGgx2kKL7mHbA= golang.org/x/perf v0.0.0-20201207232921-bdcc6220ee90/go.mod h1:KRSrLY7jerMEa0Ih7gBheQ3FYDiSx6liMnniX1o3j2g= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= google.golang.org/api v0.0.0-20170206182103-3d017632ea10/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= diff --git a/pkg/benchstatter/benchstat.go b/pkg/benchstatter/benchstat.go index a808ccf..c6f1aec 100644 --- a/pkg/benchstatter/benchstat.go +++ b/pkg/benchstatter/benchstat.go @@ -147,8 +147,12 @@ func HTMLFormatter(opts *HTMLFormatterOptions) OutputFormatter { } var buf bytes.Buffer benchstat.FormatHTML(&buf, tables) + _, err := w.Write(buf.Bytes()) + if err != nil { + return err + } if footer != "" { - _, err := w.Write([]byte(footer)) + _, err = w.Write([]byte(footer)) if err != nil { return err } diff --git a/pkg/benchstatter/benchstat_test.go b/pkg/benchstatter/benchstat_test.go index a4e4ef5..a0b3842 100644 --- a/pkg/benchstatter/benchstat_test.go +++ b/pkg/benchstatter/benchstat_test.go @@ -2,30 +2,151 @@ package benchstatter import ( "bytes" - "path/filepath" + "io/ioutil" + "os" "testing" "github.com/stretchr/testify/require" + "golang.org/x/perf/benchstat" ) func TestBenchstat_Run(t *testing.T) { - worktreeFile := filepath.FromSlash("./testdata/outputs/benchdiff-worktree.out") - baseFile := filepath.FromSlash("./testdata/outputs/benchdiff-1.out") - var buf bytes.Buffer - bs := &Benchstat{} - collection, err := bs.Run(worktreeFile, baseFile) + pwd, err := os.Getwd() require.NoError(t, err) - err = bs.OutputTables(&buf, collection.Tables()) - require.NoError(t, err) - - want := `name old time/op new time/op delta -DoNothing-8 1.31ms ±13% 10.89ms ± 7% +728.87% (p=0.000 n=10+10) - -name old alloc/op new alloc/op delta -DoNothing-8 32.2B ± 2% 11.4B ± 5% -64.48% (p=0.000 n=9+9) - -name old allocs/op new allocs/op delta -DoNothing-8 0.00 0.00 ~ (all equal) -` - require.Equal(t, want, buf.String()) + require.NoError(t, os.Chdir("testdata")) + t.Cleanup(func() { + t.Helper() + require.NoError(t, os.Chdir(pwd)) + }) + for _, td := range []struct { + golden string + base string + head string + b *Benchstat + }{ + { + golden: "example", + base: "exampleold.txt", + head: "examplenew.txt", + b: new(Benchstat), + }, + { + golden: "examplehtml", + base: "exampleold.txt", + head: "examplenew.txt", + b: &Benchstat{ + OutputFormatter: HTMLFormatter(nil), + }, + }, + { + golden: "examplecsv", + base: "exampleold.txt", + head: "examplenew.txt", + b: &Benchstat{ + OutputFormatter: CSVFormatter(nil), + }, + }, + { + golden: "oldnew", + base: "old.txt", + head: "new.txt", + b: new(Benchstat), + }, + { + golden: "oldnewgeo", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + AddGeoMean: true, + }, + }, + { + golden: "new4", + base: "new.txt", + head: "slashslash4.txt", + b: new(Benchstat), + }, + { + golden: "oldnewhtml", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + OutputFormatter: HTMLFormatter(nil), + }, + }, + { + golden: "oldnewcsv", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + OutputFormatter: CSVFormatter(nil), + }, + }, + { + golden: "oldnewttest", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + DeltaTest: benchstat.TTest, + }, + }, + { + golden: "packages", + base: "packagesold.txt", + head: "packagesnew.txt", + b: &Benchstat{ + SplitBy: []string{"pkg", "goos", "goarch"}, + }, + }, + { + golden: "units", + base: "units-old.txt", + head: "units-new.txt", + b: new(Benchstat), + }, + { + golden: "zero", + base: "zero-old.txt", + head: "zero-new.txt", + b: &Benchstat{ + DeltaTest: benchstat.NoDeltaTest, + }, + }, + { + golden: "namesort", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + Order: benchstat.ByName, + }, + }, + { + golden: "deltasort", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + Order: benchstat.ByDelta, + }, + }, + { + golden: "rdeltasort", + base: "old.txt", + head: "new.txt", + b: &Benchstat{ + Order: benchstat.ByDelta, + ReverseOrder: true, + }, + }, + } { + t.Run(td.golden, func(t *testing.T) { + result, err := td.b.Run(td.base, td.head) + require.NoError(t, err) + var buf bytes.Buffer + err = td.b.OutputTables(&buf, result.Tables()) + require.NoError(t, err) + want, err := ioutil.ReadFile(td.golden + ".golden") + require.NoError(t, err) + require.Equal(t, string(want), buf.String()) + }) + } } diff --git a/pkg/benchstatter/testdata/deltasort.golden b/pkg/benchstatter/testdata/deltasort.golden new file mode 100644 index 0000000..020c044 --- /dev/null +++ b/pkg/benchstatter/testdata/deltasort.golden @@ -0,0 +1,75 @@ +name old time/op new time/op delta +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.010 n=9+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.000 n=9+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.003 n=9+8) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.539 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.952 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.882 n=9+9) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.508 n=10+9) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% ~ (p=0.055 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.754 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.036 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.005 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.008 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) + +name old speed new speed delta +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.001 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.000 n=9+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.002 n=9+8) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.579 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% ~ (p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.780 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.842 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.497 n=10+9) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.739 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.005 n=10+10) +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.009 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) diff --git a/pkg/benchstatter/testdata/example.golden b/pkg/benchstatter/testdata/example.golden new file mode 100644 index 0000000..f98bd9e --- /dev/null +++ b/pkg/benchstatter/testdata/example.golden @@ -0,0 +1,7 @@ +name old time/op new time/op delta +GobEncode 13.6ms ± 1% 11.8ms ± 1% -13.31% (p=0.016 n=4+5) +JSONEncode 32.1ms ± 1% 31.8ms ± 1% ~ (p=0.286 n=4+5) + +name old speed new speed delta +GobEncode 56.4MB/s ± 1% 65.1MB/s ± 1% +15.36% (p=0.016 n=4+5) +JSONEncode 60.4MB/s ± 1% 61.1MB/s ± 2% ~ (p=0.286 n=4+5) diff --git a/pkg/benchstatter/testdata/examplecsv.golden b/pkg/benchstatter/testdata/examplecsv.golden new file mode 100644 index 0000000..3a758f2 --- /dev/null +++ b/pkg/benchstatter/testdata/examplecsv.golden @@ -0,0 +1,7 @@ +name,old time/op (ns/op),±,new time/op (ns/op),±,delta,± +GobEncode,1.35991E+07,1%,1.17893E+07,1%,-13.31%,(p=0.016 n=4+5) +JSONEncode,3.21143E+07,1%,3.17614E+07,1%,~,(p=0.286 n=4+5) + +name,old speed (MB/s),±,new speed (MB/s),±,delta,± +GobEncode,5.64400E+01,1%,6.51080E+01,1%,+15.36%,(p=0.016 n=4+5) +JSONEncode,6.04275E+01,1%,6.11020E+01,2%,~,(p=0.286 n=4+5) diff --git a/pkg/benchstatter/testdata/examplehtml.golden b/pkg/benchstatter/testdata/examplehtml.golden new file mode 100644 index 0000000..501dd57 --- /dev/null +++ b/pkg/benchstatter/testdata/examplehtml.golden @@ -0,0 +1,38 @@ + + + + +Performance Result Comparison + + + + + + + + + + + +
exampleold.txtexamplenew.txt + + +
time/opdelta +
GobEncode13.6ms ± 1%11.8ms ± 1%−13.31%(p=0.016 n=4+5) +
JSONEncode32.1ms ± 1%31.8ms ± 1%~(p=0.286 n=4+5) +
  +
speeddelta +
GobEncode56.4MB/s ± 1%65.1MB/s ± 1%+15.36%(p=0.016 n=4+5) +
JSONEncode60.4MB/s ± 1%61.1MB/s ± 2%~(p=0.286 n=4+5) +
  +
+ + diff --git a/pkg/benchstatter/testdata/examplenew.txt b/pkg/benchstatter/testdata/examplenew.txt new file mode 100644 index 0000000..9463228 --- /dev/null +++ b/pkg/benchstatter/testdata/examplenew.txt @@ -0,0 +1,10 @@ +BenchmarkGobEncode 100 11773189 ns/op 65.19 MB/s +BenchmarkJSONEncode 50 32036529 ns/op 60.57 MB/s +BenchmarkGobEncode 100 11942588 ns/op 64.27 MB/s +BenchmarkJSONEncode 50 32156552 ns/op 60.34 MB/s +BenchmarkGobEncode 100 11786159 ns/op 65.12 MB/s +BenchmarkJSONEncode 50 31288355 ns/op 62.02 MB/s +BenchmarkGobEncode 100 11628583 ns/op 66.00 MB/s +BenchmarkJSONEncode 50 31559706 ns/op 61.49 MB/s +BenchmarkGobEncode 100 11815924 ns/op 64.96 MB/s +BenchmarkJSONEncode 50 31765634 ns/op 61.09 MB/s diff --git a/pkg/benchstatter/testdata/exampleold.txt b/pkg/benchstatter/testdata/exampleold.txt new file mode 100644 index 0000000..9ec3f51 --- /dev/null +++ b/pkg/benchstatter/testdata/exampleold.txt @@ -0,0 +1,8 @@ +BenchmarkGobEncode 100 13552735 ns/op 56.63 MB/s +BenchmarkJSONEncode 50 32395067 ns/op 59.90 MB/s +BenchmarkGobEncode 100 13553943 ns/op 56.63 MB/s +BenchmarkJSONEncode 50 32334214 ns/op 60.01 MB/s +BenchmarkGobEncode 100 13606356 ns/op 56.41 MB/s +BenchmarkJSONEncode 50 31992891 ns/op 60.65 MB/s +BenchmarkGobEncode 100 13683198 ns/op 56.09 MB/s +BenchmarkJSONEncode 50 31735022 ns/op 61.15 MB/s diff --git a/pkg/benchstatter/testdata/namesort.golden b/pkg/benchstatter/testdata/namesort.golden new file mode 100644 index 0000000..2dea70b --- /dev/null +++ b/pkg/benchstatter/testdata/namesort.golden @@ -0,0 +1,75 @@ +name old time/op new time/op delta +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.003 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.882 n=9+9) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.002 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.036 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.952 n=10+9) +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.008 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.539 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.508 n=10+9) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.010 n=9+10) +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% ~ (p=0.055 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.754 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.143 n=10+10) + +name old speed new speed delta +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.002 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.842 n=9+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.002 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% ~ (p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.780 n=10+9) +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.009 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.579 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.001 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.497 n=10+9) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.739 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.143 n=10+10) diff --git a/pkg/benchstatter/testdata/new.txt b/pkg/benchstatter/testdata/new.txt new file mode 100644 index 0000000..b45c622 --- /dev/null +++ b/pkg/benchstatter/testdata/new.txt @@ -0,0 +1,367 @@ +pkg: hash/crc32 +goarch: amd64 +goos: darwin +note: hw acceleration enabled + +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 43.6 ns/op 343.87 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 45.4 ns/op 330.50 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 43.4 ns/op 345.50 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 45.3 ns/op 331.23 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 43.9 ns/op 341.73 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 46.0 ns/op 326.03 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 45.1 ns/op 332.54 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 43.8 ns/op 342.12 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 43.8 ns/op 342.14 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 44.9 ns/op 333.84 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 43.8 ns/op 342.08 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.0 ns/op 340.68 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 45.0 ns/op 333.41 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.1 ns/op 340.41 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 43.7 ns/op 343.58 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 43.7 ns/op 342.96 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.9 ns/op 333.71 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 46.3 ns/op 323.68 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.9 ns/op 333.82 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.6 ns/op 336.33 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 43.9 ns/op 912.06 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.3 ns/op 945.28 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.7 ns/op 937.51 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 43.5 ns/op 919.03 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 44.9 ns/op 890.35 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.6 ns/op 938.20 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.3 ns/op 968.78 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.2 ns/op 970.69 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.3 ns/op 968.06 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.3 ns/op 968.27 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.3 ns/op 968.46 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.5 ns/op 941.20 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 43.2 ns/op 926.72 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.1 ns/op 949.91 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.9 ns/op 953.96 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.9 ns/op 954.23 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.5 ns/op 964.12 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.9 ns/op 932.70 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.7 ns/op 959.93 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.4 ns/op 966.36 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 2000000 56.1 ns/op 9128.24 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 2000000 56.2 ns/op 9107.94 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 3000000 56.1 ns/op 9129.45 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 3000000 56.5 ns/op 9064.49 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 3000000 58.1 ns/op 8819.84 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 3000000 59.0 ns/op 8675.61 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 2000000 55.9 ns/op 9157.53 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 3000000 57.0 ns/op 8976.22 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 2000000 58.7 ns/op 8724.66 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 2000000 57.6 ns/op 8887.48 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 2000000 58.3 ns/op 8782.52 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 57.6 ns/op 8882.44 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 2000000 57.0 ns/op 8980.50 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 56.4 ns/op 9071.81 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 56.0 ns/op 9135.04 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 2000000 58.8 ns/op 8705.97 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 2000000 56.2 ns/op 9115.68 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 57.3 ns/op 8941.28 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 56.3 ns/op 9090.66 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 3000000 57.8 ns/op 8854.75 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 92.6 ns/op 11058.32 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 93.8 ns/op 10913.47 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 93.5 ns/op 10953.07 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 95.0 ns/op 10778.58 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 94.8 ns/op 10799.14 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 95.3 ns/op 10741.03 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 92.6 ns/op 11055.29 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 1000000 100 ns/op 10189.63 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 2000000 95.3 ns/op 10747.01 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 1000000 102 ns/op 9978.90 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 1000000 103 ns/op 9907.74 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 92.8 ns/op 11036.21 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 92.8 ns/op 11031.01 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 1000000 102 ns/op 10006.87 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 93.1 ns/op 11000.89 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 92.8 ns/op 11029.36 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 95.3 ns/op 10743.40 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 93.6 ns/op 10941.47 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 93.3 ns/op 10979.13 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 2000000 92.6 ns/op 11053.13 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 302 ns/op 13561.37 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 294 ns/op 13906.19 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 298 ns/op 13734.81 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 296 ns/op 13826.62 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 301 ns/op 13598.75 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 299 ns/op 13676.26 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 299 ns/op 13686.88 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 289 ns/op 14143.28 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 296 ns/op 13824.99 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 500000 298 ns/op 13716.11 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 295 ns/op 13878.73 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 302 ns/op 13531.91 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 295 ns/op 13868.51 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 293 ns/op 13944.64 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 300 ns/op 13620.51 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 296 ns/op 13820.66 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 305 ns/op 13418.41 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 293 ns/op 13960.90 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 303 ns/op 13506.47 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 500000 309 ns/op 13218.83 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2149 ns/op 15241.57 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 50000 2230 ns/op 14693.09 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2183 ns/op 15005.52 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2115 ns/op 15486.09 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2227 ns/op 14708.97 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 50000 2140 ns/op 15308.69 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2157 ns/op 15188.25 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 50000 2133 ns/op 15359.48 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2117 ns/op 15475.06 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 100000 2129 ns/op 15385.26 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2233 ns/op 14673.10 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2244 ns/op 14596.46 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 50000 2154 ns/op 15211.73 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2156 ns/op 15196.79 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 50000 2159 ns/op 15175.66 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2151 ns/op 15228.03 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2169 ns/op 15105.80 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2206 ns/op 14850.25 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 100000 2145 ns/op 15271.77 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 50000 2166 ns/op 15126.92 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.1 ns/op 932.96 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.4 ns/op 912.82 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.2 ns/op 924.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.1 ns/op 934.22 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.2 ns/op 924.90 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.6 ns/op 904.66 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.5 ns/op 910.72 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 17.6 ns/op 853.00 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.4 ns/op 915.21 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.2 ns/op 923.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.2 ns/op 871.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.5 ns/op 854.97 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.3 ns/op 864.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 16.9 ns/op 885.36 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.4 ns/op 862.94 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 16.9 ns/op 887.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.0 ns/op 879.90 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.7 ns/op 847.32 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.6 ns/op 854.26 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.4 ns/op 864.10 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.5 ns/op 2279.37 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.1 ns/op 2334.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.9 ns/op 2235.38 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.1 ns/op 2338.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.2 ns/op 2325.21 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.8 ns/op 2251.24 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.8 ns/op 2242.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 18.2 ns/op 2199.30 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.4 ns/op 2305.18 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.3 ns/op 2315.62 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.5 ns/op 2055.96 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.7 ns/op 2034.99 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.3 ns/op 2068.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.8 ns/op 2021.43 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.4 ns/op 2060.79 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.3 ns/op 2076.79 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.1 ns/op 2091.18 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.0 ns/op 2100.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.5 ns/op 2049.71 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.3 ns/op 2074.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.7 ns/op 12891.27 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.1 ns/op 12777.24 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 41.7 ns/op 12266.52 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.8 ns/op 12866.81 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.8 ns/op 12862.14 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.8 ns/op 12537.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.3 ns/op 13022.34 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.9 ns/op 12817.64 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.8 ns/op 12543.27 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.4 ns/op 12993.64 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.7 ns/op 12276.08 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.0 ns/op 12199.95 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.2 ns/op 12121.96 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.9 ns/op 12215.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 43.2 ns/op 11854.68 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.1 ns/op 12165.99 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.5 ns/op 12328.95 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.9 ns/op 12206.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.6 ns/op 12306.14 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.6 ns/op 12022.39 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.4 ns/op 15646.46 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.9 ns/op 15531.97 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.4 ns/op 15422.12 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.7 ns/op 15358.30 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 72.1 ns/op 14207.76 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.3 ns/op 15455.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.2 ns/op 15479.94 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 68.6 ns/op 14926.33 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.3 ns/op 15436.78 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.1 ns/op 15481.91 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 68.6 ns/op 14928.29 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 67.2 ns/op 15241.88 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 68.3 ns/op 14985.73 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 68.5 ns/op 14958.31 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 69.2 ns/op 14806.15 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 68.4 ns/op 14977.84 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 69.1 ns/op 14822.32 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 67.5 ns/op 15171.65 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 70.7 ns/op 14489.26 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 69.4 ns/op 14744.72 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 157 ns/op 25978.03 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26173.33 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 160 ns/op 25471.67 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26190.72 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 164 ns/op 24861.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 157 ns/op 26018.79 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26101.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 163 ns/op 24990.34 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 162 ns/op 25138.27 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 157 ns/op 25972.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 164 ns/op 24908.40 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 160 ns/op 25529.63 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 167 ns/op 24412.21 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 162 ns/op 25206.52 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 158 ns/op 25827.66 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 160 ns/op 25519.93 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 163 ns/op 25090.11 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 159 ns/op 25657.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 160 ns/op 25576.18 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 163 ns/op 25007.68 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1233 ns/op 26561.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1223 ns/op 26786.22 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1193 ns/op 27451.16 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1288 ns/op 25436.18 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1212 ns/op 27022.56 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1245 ns/op 26314.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1208 ns/op 27105.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1200 ns/op 27296.77 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1226 ns/op 26714.57 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 200000 1189 ns/op 27542.78 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1235 ns/op 26530.39 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1193 ns/op 27444.08 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1272 ns/op 25752.85 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1210 ns/op 27080.94 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1207 ns/op 27142.02 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1245 ns/op 26305.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1226 ns/op 26710.70 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1223 ns/op 26787.03 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1217 ns/op 26921.93 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1180 ns/op 27746.71 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.6 ns/op 421.93 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.2 ns/op 425.84 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.1 ns/op 415.35 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.2 ns/op 426.25 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.6 ns/op 420.98 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.6 ns/op 410.25 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.1 ns/op 427.35 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.8 ns/op 419.33 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.6 ns/op 421.31 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 35.2 ns/op 425.93 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.1 ns/op 427.06 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.7 ns/op 420.07 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 3000000 35.2 ns/op 425.76 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.4 ns/op 423.84 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.4 ns/op 423.98 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 37.4 ns/op 400.57 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.7 ns/op 419.68 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.6 ns/op 421.03 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.5 ns/op 422.80 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 36.0 ns/op 417.04 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 89.8 ns/op 445.33 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 89.1 ns/op 448.86 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.6 ns/op 456.76 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 86.7 ns/op 461.44 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 86.6 ns/op 462.14 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 88.0 ns/op 454.58 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.2 ns/op 458.73 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.5 ns/op 457.33 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 86.4 ns/op 462.92 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.6 ns/op 456.63 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.2 ns/op 458.58 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.0 ns/op 459.82 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 89.1 ns/op 449.14 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 86.5 ns/op 462.62 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 88.8 ns/op 450.43 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.1 ns/op 459.03 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.8 ns/op 455.54 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.5 ns/op 457.36 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 90.9 ns/op 440.04 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 88.4 ns/op 452.59 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1100 ns/op 465.26 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1072 ns/op 477.31 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1075 ns/op 475.90 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1056 ns/op 484.71 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1113 ns/op 459.68 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1054 ns/op 485.69 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1066 ns/op 480.13 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1074 ns/op 476.36 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1057 ns/op 483.93 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1092 ns/op 468.52 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1074 ns/op 476.50 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1100 ns/op 465.08 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1106 ns/op 462.87 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1226 ns/op 417.43 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1189 ns/op 430.31 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 100000 1176 ns/op 435.29 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1235 ns/op 414.39 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1213 ns/op 422.03 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1210 ns/op 422.92 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1137 ns/op 450.03 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2259 ns/op 453.12 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2322 ns/op 441.00 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2350 ns/op 435.62 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2355 ns/op 434.74 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 50000 2291 ns/op 446.86 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2343 ns/op 436.93 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2416 ns/op 423.68 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2410 ns/op 424.86 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2256 ns/op 453.73 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2405 ns/op 425.75 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 50000 2472 ns/op 414.20 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2433 ns/op 420.76 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 50000 2390 ns/op 428.34 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2368 ns/op 432.28 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2294 ns/op 446.37 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2334 ns/op 438.61 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2298 ns/op 445.50 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2374 ns/op 431.17 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2354 ns/op 434.95 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2284 ns/op 448.24 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8799 ns/op 465.49 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9346 ns/op 438.26 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9129 ns/op 448.65 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8710 ns/op 470.25 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8699 ns/op 470.83 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8704 ns/op 470.58 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9563 ns/op 428.28 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9173 ns/op 446.50 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9286 ns/op 441.08 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8623 ns/op 475.00 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8410 ns/op 487.02 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8847 ns/op 462.96 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8430 ns/op 485.83 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8505 ns/op 481.58 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8426 ns/op 486.11 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 10107 ns/op 405.24 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9125 ns/op 448.83 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9740 ns/op 420.50 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9564 ns/op 428.23 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9309 ns/op 439.97 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 69825 ns/op 469.28 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 74409 ns/op 440.37 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 75041 ns/op 436.67 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 72268 ns/op 453.42 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 73333 ns/op 446.84 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 70923 ns/op 462.02 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 70095 ns/op 467.48 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 76125 ns/op 430.45 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 73908 ns/op 443.36 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 73078 ns/op 448.39 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 76238 ns/op 429.81 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 74141 ns/op 441.97 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 71910 ns/op 455.67 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 76684 ns/op 427.31 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 75951 ns/op 431.43 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 73299 ns/op 447.04 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 76288 ns/op 429.53 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 73453 ns/op 446.10 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 72748 ns/op 450.43 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 72097 ns/op 454.50 MB/s +PASS +ok hash/crc32 72.655s diff --git a/pkg/benchstatter/testdata/new4.golden b/pkg/benchstatter/testdata/new4.golden new file mode 100644 index 0000000..a1eb317 --- /dev/null +++ b/pkg/benchstatter/testdata/new4.golden @@ -0,0 +1,27 @@ +name old time/op new time/op delta +CRC32/poly=IEEE/size=40/align=0-8 42.5ns ± 6% 42.1ns ± 3% ~ (p=0.642 n=10+10) +CRC32/poly=IEEE/size=40/align=1-8 42.0ns ± 3% 41.7ns ± 5% ~ (p=0.148 n=10+10) +CRC32/poly=IEEE/size=4kB/align=0-8 298ns ± 1% 1682ns ± 2% +464.22% (p=0.000 n=9+9) +CRC32/poly=IEEE/size=4kB/align=1-8 299ns ± 3% 1690ns ± 4% +464.96% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.5ns ± 4% 18.6ns ±11% +5.99% (p=0.049 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.4ns ± 2% 19.6ns ± 2% ~ (p=0.072 n=10+8) +CRC32/poly=Castagnoli/size=4kB/align=0-8 159ns ± 3% 161ns ± 8% ~ (p=0.421 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 162ns ± 3% 170ns ± 8% +4.95% (p=0.019 n=10+10) +CRC32/poly=Koopman/size=40/align=0-8 87.6ns ± 2% 93.8ns ±13% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 88.0ns ± 3% 86.9ns ± 3% -1.33% (p=0.050 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.00µs ± 6% 9.08µs ± 8% ~ (p=0.631 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 9.05µs ±12% 9.46µs ± 8% ~ (p=0.123 n=10+10) + +name old speed new speed delta +CRC32/poly=IEEE/size=40/align=0-8 942MB/s ± 5% 951MB/s ± 3% ~ (p=0.684 n=10+10) +CRC32/poly=IEEE/size=40/align=1-8 952MB/s ± 3% 960MB/s ± 4% ~ (p=0.143 n=10+10) +CRC32/poly=IEEE/size=4kB/align=0-8 13.7GB/s ± 1% 2.4GB/s ± 2% -82.26% (p=0.000 n=9+9) +CRC32/poly=IEEE/size=4kB/align=1-8 13.7GB/s ± 3% 2.4GB/s ± 4% -82.28% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.28GB/s ± 4% 2.16GB/s ±11% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.06GB/s ± 2% 2.04GB/s ± 2% ~ (p=0.055 n=10+8) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.7GB/s ± 3% 25.4GB/s ± 7% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 25.3GB/s ± 3% 24.1GB/s ± 8% -4.55% (p=0.015 n=10+10) +CRC32/poly=Koopman/size=40/align=0-8 456MB/s ± 2% 428MB/s ±12% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 455MB/s ± 3% 461MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 455MB/s ± 6% 452MB/s ± 8% ~ (p=0.631 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 455MB/s ±11% 434MB/s ± 9% ~ (p=0.123 n=10+10) diff --git a/pkg/benchstatter/testdata/old.txt b/pkg/benchstatter/testdata/old.txt new file mode 100644 index 0000000..cd1b57e --- /dev/null +++ b/pkg/benchstatter/testdata/old.txt @@ -0,0 +1,367 @@ +pkg: hash/crc32 +goarch: amd64 +goos: darwin +note: hw acceleration disabled + +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 44.6 ns/op 336.59 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 47.3 ns/op 317.29 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 44.6 ns/op 336.14 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 46.3 ns/op 323.80 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 50.7 ns/op 295.90 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 45.8 ns/op 327.41 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 46.8 ns/op 320.56 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 44.3 ns/op 338.48 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 47.7 ns/op 314.52 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=0-8 3000000 50.6 ns/op 296.42 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 46.8 ns/op 320.44 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.0 ns/op 340.69 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.6 ns/op 336.05 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.1 ns/op 340.42 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.5 ns/op 336.82 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.0 ns/op 340.58 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.2 ns/op 339.16 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 45.1 ns/op 332.85 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 44.0 ns/op 340.71 MB/s +BenchmarkCRC32/poly=IEEE/size=15/align=1-8 3000000 45.8 ns/op 327.44 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.0 ns/op 975.84 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 43.0 ns/op 930.22 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 40.9 ns/op 978.39 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.3 ns/op 944.76 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.0 ns/op 976.58 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.0 ns/op 975.15 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.3 ns/op 967.88 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 40.8 ns/op 979.93 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.1 ns/op 974.19 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.2 ns/op 969.78 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.9 ns/op 931.47 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.9 ns/op 977.34 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.4 ns/op 965.44 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.2 ns/op 971.79 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.1 ns/op 972.53 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.8 ns/op 979.69 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.9 ns/op 978.70 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.9 ns/op 978.58 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.5 ns/op 964.07 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.0 ns/op 974.58 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 249 ns/op 2051.08 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 248 ns/op 2058.43 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 232 ns/op 2202.80 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 238 ns/op 2145.40 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 234 ns/op 2181.69 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 237 ns/op 2151.78 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 241 ns/op 2117.97 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 231 ns/op 2213.97 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 231 ns/op 2207.52 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=0-8 500000 239 ns/op 2139.64 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 238 ns/op 2143.57 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 232 ns/op 2205.23 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 230 ns/op 2220.72 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 233 ns/op 2192.30 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 231 ns/op 2215.20 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 238 ns/op 2143.03 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 242 ns/op 2108.05 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 241 ns/op 2117.57 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 230 ns/op 2220.54 MB/s +BenchmarkCRC32/poly=IEEE/size=512/align=1-8 500000 240 ns/op 2125.08 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 435 ns/op 2352.05 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 461 ns/op 2218.18 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 446 ns/op 2291.09 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 448 ns/op 2284.64 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 448 ns/op 2282.03 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 464 ns/op 2206.86 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 456 ns/op 2242.96 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 457 ns/op 2239.06 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 461 ns/op 2219.82 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8 300000 449 ns/op 2278.55 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 436 ns/op 2343.28 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 452 ns/op 2263.28 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 443 ns/op 2310.35 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 446 ns/op 2292.48 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 436 ns/op 2346.76 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 445 ns/op 2296.07 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 451 ns/op 2268.08 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 450 ns/op 2274.49 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 441 ns/op 2320.41 MB/s +BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8 300000 436 ns/op 2346.69 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1698 ns/op 2411.93 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1667 ns/op 2456.00 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1694 ns/op 2416.70 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1654 ns/op 2476.16 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1704 ns/op 2402.42 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1876 ns/op 2182.35 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1790 ns/op 2287.20 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1812 ns/op 2259.59 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1828 ns/op 2239.82 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1677 ns/op 2441.05 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1679 ns/op 2438.77 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1705 ns/op 2401.47 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1665 ns/op 2459.27 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1678 ns/op 2440.03 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1819 ns/op 2251.46 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1871 ns/op 2188.25 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1878 ns/op 2180.70 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1782 ns/op 2297.30 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1797 ns/op 2278.59 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1769 ns/op 2315.22 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 14964 ns/op 2189.65 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 14612 ns/op 2242.49 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 14258 ns/op 2298.15 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 15641 ns/op 2094.94 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 14653 ns/op 2236.19 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 15101 ns/op 2169.79 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 15065 ns/op 2174.97 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 15801 ns/op 2073.78 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 15459 ns/op 2119.55 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8 10000 13975 ns/op 2344.74 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 13567 ns/op 2415.11 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 14515 ns/op 2257.37 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 14510 ns/op 2258.21 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 15133 ns/op 2165.26 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 14383 ns/op 2278.22 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 14983 ns/op 2186.90 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 13519 ns/op 2423.74 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 13154 ns/op 2491.10 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 13594 ns/op 2410.43 MB/s +BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8 10000 14530 ns/op 2255.12 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 18.0 ns/op 834.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.4 ns/op 913.19 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.6 ns/op 903.85 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.3 ns/op 920.52 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.0 ns/op 937.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.6 ns/op 903.12 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.0 ns/op 934.62 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.6 ns/op 903.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.1 ns/op 930.77 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8 10000000 16.8 ns/op 895.10 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.0 ns/op 884.78 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.5 ns/op 855.00 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.1 ns/op 874.74 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.5 ns/op 857.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.2 ns/op 869.69 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.0 ns/op 883.09 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.1 ns/op 877.29 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.2 ns/op 869.59 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 18.6 ns/op 807.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8 10000000 17.4 ns/op 861.10 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.3 ns/op 2317.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.6 ns/op 2273.98 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.5 ns/op 2280.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.2 ns/op 2322.88 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.7 ns/op 2257.80 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.5 ns/op 2290.51 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.2 ns/op 2319.50 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.2 ns/op 2329.20 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.4 ns/op 2300.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.7 ns/op 2262.94 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 20.3 ns/op 1966.20 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.3 ns/op 2077.39 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.1 ns/op 2094.95 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.8 ns/op 2022.06 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.9 ns/op 2009.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.6 ns/op 2037.74 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 20.1 ns/op 1987.93 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.5 ns/op 2050.18 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.8 ns/op 2024.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.7 ns/op 2031.46 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.4 ns/op 12662.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.7 ns/op 12889.39 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.3 ns/op 12706.28 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.0 ns/op 12814.70 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.1 ns/op 12758.84 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.7 ns/op 12894.29 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.8 ns/op 12535.17 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.8 ns/op 12542.40 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 40.2 ns/op 12750.46 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8 3000000 39.7 ns/op 12882.94 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.9 ns/op 12212.50 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.9 ns/op 12206.11 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 43.1 ns/op 11869.61 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.8 ns/op 11949.04 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 43.3 ns/op 11823.64 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 42.0 ns/op 12196.38 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.5 ns/op 12325.33 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.8 ns/op 12236.96 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.5 ns/op 12326.79 MB/s +BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8 3000000 41.6 ns/op 12298.60 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.4 ns/op 15659.97 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.5 ns/op 15623.63 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.2 ns/op 15711.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.5 ns/op 15640.74 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.3 ns/op 15687.32 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 66.0 ns/op 15509.02 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.3 ns/op 15684.59 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 70.2 ns/op 14584.88 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.7 ns/op 15582.29 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8 2000000 65.6 ns/op 15619.90 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 67.6 ns/op 15140.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 68.1 ns/op 15039.19 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 67.5 ns/op 15180.69 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 67.6 ns/op 15146.80 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 73.1 ns/op 14015.81 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 70.7 ns/op 14493.63 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 74.1 ns/op 13820.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 71.8 ns/op 14256.30 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 70.9 ns/op 14451.65 MB/s +BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8 2000000 69.5 ns/op 14727.15 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 162 ns/op 25174.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 162 ns/op 25194.50 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 167 ns/op 24422.65 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 160 ns/op 25541.37 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 161 ns/op 25354.03 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 171 ns/op 23871.09 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 162 ns/op 25224.84 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 158 ns/op 25798.19 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 158 ns/op 25815.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 167 ns/op 24465.11 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 168 ns/op 24282.26 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 177 ns/op 23065.76 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 176 ns/op 23245.80 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 170 ns/op 24015.77 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 173 ns/op 23579.34 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 174 ns/op 23531.14 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 169 ns/op 24107.05 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 166 ns/op 24657.46 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 162 ns/op 25273.53 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 159 ns/op 25619.67 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1234 ns/op 26534.55 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1210 ns/op 27063.60 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1241 ns/op 26391.50 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1230 ns/op 26634.33 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1190 ns/op 27515.61 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1183 ns/op 27695.90 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1271 ns/op 25771.02 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1205 ns/op 27170.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1337 ns/op 24493.55 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8 100000 1200 ns/op 27299.92 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1263 ns/op 25937.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1274 ns/op 25702.13 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1278 ns/op 25639.64 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1271 ns/op 25763.65 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1235 ns/op 26515.05 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1232 ns/op 26586.52 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1341 ns/op 24430.71 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1257 ns/op 26056.28 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1264 ns/op 25910.24 MB/s +BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8 100000 1309 ns/op 25023.35 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.5 ns/op 410.82 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 37.3 ns/op 402.07 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.7 ns/op 408.83 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 34.8 ns/op 430.97 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 40.4 ns/op 371.74 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 38.6 ns/op 388.62 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.3 ns/op 413.61 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 34.0 ns/op 441.26 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 34.3 ns/op 437.06 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=0-8 5000000 36.2 ns/op 414.34 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 34.4 ns/op 435.65 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 37.0 ns/op 405.81 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.8 ns/op 419.55 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 36.5 ns/op 410.66 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 35.2 ns/op 425.85 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 34.4 ns/op 436.09 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 34.0 ns/op 441.70 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 33.9 ns/op 443.08 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 33.9 ns/op 443.04 MB/s +BenchmarkCRC32/poly=Koopman/size=15/align=1-8 5000000 36.4 ns/op 412.65 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 89.7 ns/op 445.75 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 90.4 ns/op 442.39 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 94.9 ns/op 421.61 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.4 ns/op 457.45 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 89.3 ns/op 448.11 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 90.3 ns/op 443.04 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.9 ns/op 455.14 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 93.7 ns/op 426.98 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 100 ns/op 396.87 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 92.8 ns/op 430.97 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.9 ns/op 455.30 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 90.9 ns/op 439.90 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 93.5 ns/op 427.91 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 93.7 ns/op 426.98 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 95.0 ns/op 421.02 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 90.1 ns/op 443.95 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 95.3 ns/op 419.61 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 85.6 ns/op 467.20 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 86.9 ns/op 460.19 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 91.9 ns/op 435.25 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1118 ns/op 457.68 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1168 ns/op 438.12 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1132 ns/op 452.06 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1079 ns/op 474.47 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1079 ns/op 474.46 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1126 ns/op 454.69 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1132 ns/op 452.04 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 100000 1193 ns/op 429.16 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1124 ns/op 455.38 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=0-8 200000 1166 ns/op 438.87 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1096 ns/op 466.92 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1117 ns/op 458.09 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1200 ns/op 426.33 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1109 ns/op 461.41 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1155 ns/op 443.08 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1141 ns/op 448.59 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1136 ns/op 450.61 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1145 ns/op 446.97 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 200000 1085 ns/op 471.86 MB/s +BenchmarkCRC32/poly=Koopman/size=512/align=1-8 100000 1084 ns/op 471.93 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2308 ns/op 443.53 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2480 ns/op 412.88 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2288 ns/op 447.44 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2371 ns/op 431.88 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2247 ns/op 455.55 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2211 ns/op 462.97 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2264 ns/op 452.17 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2231 ns/op 458.82 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2161 ns/op 473.71 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=0-8 100000 2109 ns/op 485.48 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2160 ns/op 473.90 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2103 ns/op 486.83 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2189 ns/op 467.75 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2159 ns/op 474.21 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2144 ns/op 477.53 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2169 ns/op 472.09 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2123 ns/op 482.20 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 50000 2150 ns/op 476.26 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2141 ns/op 478.25 MB/s +BenchmarkCRC32/poly=Koopman/size=1kB/align=1-8 100000 2238 ns/op 457.51 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8562 ns/op 478.35 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8584 ns/op 477.16 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9176 ns/op 446.36 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9096 ns/op 450.27 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9337 ns/op 438.67 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9545 ns/op 429.11 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9287 ns/op 441.04 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8963 ns/op 456.98 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8970 ns/op 456.61 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8795 ns/op 465.67 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9179 ns/op 446.20 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9026 ns/op 453.76 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8505 ns/op 481.60 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8396 ns/op 487.85 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9818 ns/op 417.17 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8652 ns/op 473.38 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8689 ns/op 471.36 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8345 ns/op 490.83 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9391 ns/op 436.13 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9401 ns/op 435.66 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 74664 ns/op 438.87 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 72859 ns/op 449.74 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 73403 ns/op 446.41 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 73646 ns/op 444.94 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 76501 ns/op 428.33 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 78648 ns/op 416.64 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 69550 ns/op 471.14 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 67848 ns/op 482.96 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 67984 ns/op 482.00 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=0-8 2000 69177 ns/op 473.68 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 70108 ns/op 467.39 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 67566 ns/op 484.98 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 71256 ns/op 459.86 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 69979 ns/op 468.25 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 69972 ns/op 468.30 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 68356 ns/op 479.37 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 69631 ns/op 470.59 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 70087 ns/op 467.53 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 75510 ns/op 433.95 MB/s +BenchmarkCRC32/poly=Koopman/size=32kB/align=1-8 2000 76970 ns/op 425.72 MB/s +PASS +ok hash/crc32 68.427s diff --git a/pkg/benchstatter/testdata/oldnew.golden b/pkg/benchstatter/testdata/oldnew.golden new file mode 100644 index 0000000..c754683 --- /dev/null +++ b/pkg/benchstatter/testdata/oldnew.golden @@ -0,0 +1,75 @@ +name old time/op new time/op delta +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.008 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.539 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.036 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.952 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.003 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.882 n=9+9) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.508 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% ~ (p=0.055 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.010 n=9+10) +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.754 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) + +name old speed new speed delta +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.009 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.579 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.001 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% ~ (p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.780 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.002 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.842 n=9+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.497 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.739 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) diff --git a/pkg/benchstatter/testdata/oldnewcsv.golden b/pkg/benchstatter/testdata/oldnewcsv.golden new file mode 100644 index 0000000..5d1dbbb --- /dev/null +++ b/pkg/benchstatter/testdata/oldnewcsv.golden @@ -0,0 +1,75 @@ +name,old time/op (ns/op),±,new time/op (ns/op),±,delta,± +CRC32/poly=IEEE/size=15/align=0-8,4.68700E+01,8%,4.45200E+01,3%,-5.01%,(p=0.008 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8,4.47100E+01,5%,4.45000E+01,4%,~,(p=0.539 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8,4.10375E+01,1%,4.25000E+01,6%,+3.56%,(p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8,4.10778E+01,1%,4.20400E+01,3%,+2.34%,(p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8,2.38000E+02,5%,5.71200E+01,3%,-76.00%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8,2.35500E+02,3%,5.71700E+01,3%,-75.72%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8,4.52500E+02,4%,9.41125E+01,2%,-79.20%,(p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8,4.43600E+02,2%,9.32875E+01,2%,-78.97%,(p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8,1.74000E+03,8%,2.98111E+02,1%,-82.87%,(p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8,1.76430E+03,6%,2.99100E+02,3%,-83.05%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8,1.49529E+04,7%,2.15800E+03,3%,-85.57%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8,1.41888E+04,7%,2.17830E+03,3%,-84.65%,(p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8,1.63778E+01,3%,1.63000E+01,2%,~,(p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8,1.72222E+01,2%,1.72900E+01,2%,~,(p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8,1.74300E+01,2%,1.75300E+01,4%,~,(p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8,1.97100E+01,3%,1.93900E+01,2%,-1.62%,(p=0.036 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8,4.01700E+01,2%,4.01300E+01,4%,~,(p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8,4.21400E+01,3%,4.19444E+01,2%,~,(p=0.952 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8,6.55000E+01,1%,6.61625E+01,1%,+1.01%,(p=0.003 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8,7.00900E+01,6%,6.84667E+01,2%,~,(p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8,1.62800E+02,5%,1.58800E+02,3%,-2.46%,(p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8,1.69400E+02,6%,1.61600E+02,3%,-4.60%,(p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8,1.21822E+03,4%,1.21433E+03,3%,~,(p=0.882 n=9+9) +CRC32/poly=Castagnoli/size=32kB/align=1-8,1.26478E+03,3%,1.22080E+03,4%,-3.48%,(p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8,3.65100E+01,11%,3.56000E+01,3%,~,(p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8,3.51500E+01,5%,3.55111E+01,1%,~,(p=0.508 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8,9.16400E+01,9%,8.76500E+01,2%,-4.35%,(p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8,9.10800E+01,6%,8.80300E+01,3%,~,(p=0.055 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8,1.13170E+03,5%,1.07590E+03,3%,-4.93%,(p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8,1.12680E+03,6%,1.16660E+03,8%,~,(p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8,2.24333E+03,6%,2.34070E+03,4%,+4.34%,(p=0.010 n=9+10) +CRC32/poly=Koopman/size=1kB/align=1-8,2.14867E+03,2%,2.36010E+03,5%,+9.84%,(p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8,9.03150E+03,6%,9.00320E+03,6%,~,(p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8,8.94020E+03,10%,9.04630E+03,12%,~,(p=0.754 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8,7.24280E+04,9%,7.29005E+04,4%,~,(p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8,6.96194E+04,3%,7.42809E+04,3%,+6.70%,(p=0.000 n=8+10) + +name,old speed (MB/s),±,new speed (MB/s),±,delta,± +CRC32/poly=IEEE/size=15/align=0-8,3.20711E+02,8%,3.36950E+02,3%,+5.06%,(p=0.009 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8,3.35516E+02,4%,3.37066E+02,4%,~,(p=0.579 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8,9.74718E+02,1%,9.41823E+02,5%,-3.37%,(p=0.001 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8,9.73636E+02,1%,9.51759E+02,3%,-2.25%,(p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8,2.14703E+03,4%,8.96715E+03,3%,+317.65%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8,2.16913E+03,3%,8.95606E+03,3%,+312.89%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8,2.26152E+03,4%,1.08807E+04,2%,+381.12%,(p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8,2.30619E+03,2%,1.09768E+04,2%,+375.97%,(p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8,2.35732E+03,7%,1.37258E+04,1%,+482.26%,(p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8,2.32511E+03,6%,1.36770E+04,3%,+488.23%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8,2.19443E+03,7%,1.51852E+04,3%,+591.99%,(p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8,2.31415E+03,8%,1.50437E+04,3%,+550.07%,(p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8,9.15799E+02,2%,9.20433E+02,2%,~,(p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8,8.70312E+02,2%,8.67298E+02,2%,~,(p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8,2.29560E+03,2%,2.28265E+03,4%,~,(p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8,2.03023E+03,3%,2.06346E+03,2%,~,(p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8,1.27437E+04,2%,1.27578E+04,4%,~,(p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8,1.21445E+04,3%,1.22049E+04,1%,~,(p=0.780 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8,1.56355E+04,1%,1.54766E+04,1%,-1.02%,(p=0.002 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8,1.46273E+04,6%,1.49597E+04,2%,~,(p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8,2.50862E+04,5%,2.56897E+04,3%,~,(p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8,2.41378E+04,6%,2.52736E+04,3%,+4.71%,(p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8,2.68975E+04,4%,2.68232E+04,5%,~,(p=0.842 n=9+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8,2.59038E+04,3%,2.68422E+04,4%,+3.62%,(p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8,4.11932E+02,10%,4.21452E+02,3%,~,(p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8,4.27408E+02,5%,4.22362E+02,1%,~,(p=0.497 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8,4.36831E+02,9%,4.56472E+02,2%,+4.50%,(p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8,4.39731E+02,6%,4.54515E+02,3%,~,(p=0.052 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8,4.52693E+02,5%,4.75749E+02,3%,+5.09%,(p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8,4.54579E+02,6%,4.39685E+02,8%,~,(p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8,4.52443E+02,9%,4.37629E+02,4%,~,(p=0.052 n=10+10) +CRC32/poly=Koopman/size=1kB/align=1-8,4.76558E+02,2%,4.34042E+02,5%,-8.92%,(p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8,4.54022E+02,5%,4.55492E+02,6%,~,(p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8,4.59394E+02,9%,4.54627E+02,11%,~,(p=0.739 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8,4.53471E+02,8%,4.49828E+02,4%,~,(p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8,4.70784E+02,3%,4.41379E+02,3%,-6.25%,(p=0.000 n=8+10) diff --git a/pkg/benchstatter/testdata/oldnewgeo.golden b/pkg/benchstatter/testdata/oldnewgeo.golden new file mode 100644 index 0000000..c625f03 --- /dev/null +++ b/pkg/benchstatter/testdata/oldnewgeo.golden @@ -0,0 +1,77 @@ +name old time/op new time/op delta +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.008 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.539 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.000 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.036 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.952 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.003 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.882 n=9+9) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.508 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% ~ (p=0.055 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.010 n=9+10) +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.754 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) +[Geo mean] 345ns 238ns -30.99% + +name old speed new speed delta +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.009 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.579 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.001 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% ~ (p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.780 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.002 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.005 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.842 n=9+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.002 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.497 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.002 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.739 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) +[Geo mean] 1.71GB/s 2.48GB/s +44.88% diff --git a/pkg/benchstatter/testdata/oldnewhtml.golden b/pkg/benchstatter/testdata/oldnewhtml.golden new file mode 100644 index 0000000..84ed364 --- /dev/null +++ b/pkg/benchstatter/testdata/oldnewhtml.golden @@ -0,0 +1,106 @@ + + + + +Performance Result Comparison + + + + + + + + + + + +
old.txtnew.txt + + +
time/opdelta +
CRC32/poly=IEEE/size=15/align=0-846.9ns ± 8%44.5ns ± 3%−5.01%(p=0.008 n=10+10) +
CRC32/poly=IEEE/size=15/align=1-844.7ns ± 5%44.5ns ± 4%~(p=0.539 n=10+10) +
CRC32/poly=IEEE/size=40/align=0-841.0ns ± 1%42.5ns ± 6%+3.56%(p=0.000 n=8+10) +
CRC32/poly=IEEE/size=40/align=1-841.1ns ± 1%42.0ns ± 3%+2.34%(p=0.000 n=9+10) +
CRC32/poly=IEEE/size=512/align=0-8238ns ± 5%57ns ± 3%−76.00%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=512/align=1-8236ns ± 3%57ns ± 3%−75.72%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=1kB/align=0-8452ns ± 4%94ns ± 2%−79.20%(p=0.000 n=10+8) +
CRC32/poly=IEEE/size=1kB/align=1-8444ns ± 2%93ns ± 2%−78.97%(p=0.000 n=10+8) +
CRC32/poly=IEEE/size=4kB/align=0-81.74µs ± 8%0.30µs ± 1%−82.87%(p=0.000 n=10+9) +
CRC32/poly=IEEE/size=4kB/align=1-81.76µs ± 6%0.30µs ± 3%−83.05%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=32kB/align=0-815.0µs ± 7%2.2µs ± 3%−85.57%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=32kB/align=1-814.2µs ± 7%2.2µs ± 3%−84.65%(p=0.000 n=10+10) +
CRC32/poly=Castagnoli/size=15/align=0-816.4ns ± 3%16.3ns ± 2%~(p=0.615 n=9+9) +
CRC32/poly=Castagnoli/size=15/align=1-817.2ns ± 2%17.3ns ± 2%~(p=0.650 n=9+10) +
CRC32/poly=Castagnoli/size=40/align=0-817.4ns ± 2%17.5ns ± 4%~(p=0.694 n=10+10) +
CRC32/poly=Castagnoli/size=40/align=1-819.7ns ± 3%19.4ns ± 2%−1.62%(p=0.036 n=10+10) +
CRC32/poly=Castagnoli/size=512/align=0-840.2ns ± 2%40.1ns ± 4%~(p=0.614 n=10+10) +
CRC32/poly=Castagnoli/size=512/align=1-842.1ns ± 3%41.9ns ± 2%~(p=0.952 n=10+9) +
CRC32/poly=Castagnoli/size=1kB/align=0-865.5ns ± 1%66.2ns ± 1%+1.01%(p=0.003 n=9+8) +
CRC32/poly=Castagnoli/size=1kB/align=1-870.1ns ± 6%68.5ns ± 2%~(p=0.190 n=10+9) +
CRC32/poly=Castagnoli/size=4kB/align=0-8163ns ± 5%159ns ± 3%−2.46%(p=0.032 n=10+10) +
CRC32/poly=Castagnoli/size=4kB/align=1-8169ns ± 6%162ns ± 3%−4.60%(p=0.005 n=10+10) +
CRC32/poly=Castagnoli/size=32kB/align=0-81.22µs ± 4%1.21µs ± 3%~(p=0.882 n=9+9) +
CRC32/poly=Castagnoli/size=32kB/align=1-81.26µs ± 3%1.22µs ± 4%−3.48%(p=0.002 n=9+10) +
CRC32/poly=Koopman/size=15/align=0-836.5ns ±11%35.6ns ± 3%~(p=0.216 n=10+10) +
CRC32/poly=Koopman/size=15/align=1-835.1ns ± 5%35.5ns ± 1%~(p=0.508 n=10+9) +
CRC32/poly=Koopman/size=40/align=0-891.6ns ± 9%87.6ns ± 2%−4.35%(p=0.002 n=10+10) +
CRC32/poly=Koopman/size=40/align=1-891.1ns ± 6%88.0ns ± 3%~(p=0.055 n=10+10) +
CRC32/poly=Koopman/size=512/align=0-81.13µs ± 5%1.08µs ± 3%−4.93%(p=0.000 n=10+10) +
CRC32/poly=Koopman/size=512/align=1-81.13µs ± 6%1.17µs ± 8%~(p=0.143 n=10+10) +
CRC32/poly=Koopman/size=1kB/align=0-82.24µs ± 6%2.34µs ± 4%+4.34%(p=0.010 n=9+10) +
CRC32/poly=Koopman/size=1kB/align=1-82.15µs ± 2%2.36µs ± 5%+9.84%(p=0.000 n=9+10) +
CRC32/poly=Koopman/size=4kB/align=0-89.03µs ± 6%9.00µs ± 6%~(p=0.971 n=10+10) +
CRC32/poly=Koopman/size=4kB/align=1-88.94µs ±10%9.05µs ±12%~(p=0.754 n=10+10) +
CRC32/poly=Koopman/size=32kB/align=0-872.4µs ± 9%72.9µs ± 4%~(p=0.684 n=10+10) +
CRC32/poly=Koopman/size=32kB/align=1-869.6µs ± 3%74.3µs ± 3%+6.70%(p=0.000 n=8+10) +
  +
speeddelta +
CRC32/poly=IEEE/size=15/align=0-8321MB/s ± 8%337MB/s ± 3%+5.06%(p=0.009 n=10+10) +
CRC32/poly=IEEE/size=15/align=1-8336MB/s ± 4%337MB/s ± 4%~(p=0.579 n=10+10) +
CRC32/poly=IEEE/size=40/align=0-8975MB/s ± 1%942MB/s ± 5%−3.37%(p=0.001 n=8+10) +
CRC32/poly=IEEE/size=40/align=1-8974MB/s ± 1%952MB/s ± 3%−2.25%(p=0.000 n=9+10) +
CRC32/poly=IEEE/size=512/align=0-82.15GB/s ± 4%8.97GB/s ± 3%+317.65%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=512/align=1-82.17GB/s ± 3%8.96GB/s ± 3%+312.89%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=1kB/align=0-82.26GB/s ± 4%10.88GB/s ± 2%+381.12%(p=0.000 n=10+8) +
CRC32/poly=IEEE/size=1kB/align=1-82.31GB/s ± 2%10.98GB/s ± 2%+375.97%(p=0.000 n=10+8) +
CRC32/poly=IEEE/size=4kB/align=0-82.36GB/s ± 7%13.73GB/s ± 1%+482.26%(p=0.000 n=10+9) +
CRC32/poly=IEEE/size=4kB/align=1-82.33GB/s ± 6%13.68GB/s ± 3%+488.23%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=32kB/align=0-82.19GB/s ± 7%15.19GB/s ± 3%+591.99%(p=0.000 n=10+10) +
CRC32/poly=IEEE/size=32kB/align=1-82.31GB/s ± 8%15.04GB/s ± 3%+550.07%(p=0.000 n=10+10) +
CRC32/poly=Castagnoli/size=15/align=0-8916MB/s ± 2%920MB/s ± 2%~(p=0.489 n=9+9) +
CRC32/poly=Castagnoli/size=15/align=1-8870MB/s ± 2%867MB/s ± 2%~(p=0.661 n=9+10) +
CRC32/poly=Castagnoli/size=40/align=0-82.30GB/s ± 2%2.28GB/s ± 4%~(p=0.684 n=10+10) +
CRC32/poly=Castagnoli/size=40/align=1-82.03GB/s ± 3%2.06GB/s ± 2%~(p=0.063 n=10+10) +
CRC32/poly=Castagnoli/size=512/align=0-812.7GB/s ± 2%12.8GB/s ± 4%~(p=0.529 n=10+10) +
CRC32/poly=Castagnoli/size=512/align=1-812.1GB/s ± 3%12.2GB/s ± 1%~(p=0.780 n=10+9) +
CRC32/poly=Castagnoli/size=1kB/align=0-815.6GB/s ± 1%15.5GB/s ± 1%−1.02%(p=0.002 n=9+8) +
CRC32/poly=Castagnoli/size=1kB/align=1-814.6GB/s ± 6%15.0GB/s ± 2%~(p=0.211 n=10+9) +
CRC32/poly=Castagnoli/size=4kB/align=0-825.1GB/s ± 5%25.7GB/s ± 3%~(p=0.052 n=10+10) +
CRC32/poly=Castagnoli/size=4kB/align=1-824.1GB/s ± 6%25.3GB/s ± 3%+4.71%(p=0.005 n=10+10) +
CRC32/poly=Castagnoli/size=32kB/align=0-826.9GB/s ± 4%26.8GB/s ± 5%~(p=0.842 n=9+10) +
CRC32/poly=Castagnoli/size=32kB/align=1-825.9GB/s ± 3%26.8GB/s ± 4%+3.62%(p=0.002 n=9+10) +
CRC32/poly=Koopman/size=15/align=0-8412MB/s ±10%421MB/s ± 3%~(p=0.218 n=10+10) +
CRC32/poly=Koopman/size=15/align=1-8427MB/s ± 5%422MB/s ± 1%~(p=0.497 n=10+9) +
CRC32/poly=Koopman/size=40/align=0-8437MB/s ± 9%456MB/s ± 2%+4.50%(p=0.002 n=10+10) +
CRC32/poly=Koopman/size=40/align=1-8440MB/s ± 6%455MB/s ± 3%~(p=0.052 n=10+10) +
CRC32/poly=Koopman/size=512/align=0-8453MB/s ± 5%476MB/s ± 3%+5.09%(p=0.000 n=10+10) +
CRC32/poly=Koopman/size=512/align=1-8455MB/s ± 6%440MB/s ± 8%~(p=0.143 n=10+10) +
CRC32/poly=Koopman/size=1kB/align=0-8452MB/s ± 9%438MB/s ± 4%~(p=0.052 n=10+10) +
CRC32/poly=Koopman/size=1kB/align=1-8477MB/s ± 2%434MB/s ± 5%−8.92%(p=0.000 n=9+10) +
CRC32/poly=Koopman/size=4kB/align=0-8454MB/s ± 5%455MB/s ± 6%~(p=0.971 n=10+10) +
CRC32/poly=Koopman/size=4kB/align=1-8459MB/s ± 9%455MB/s ±11%~(p=0.739 n=10+10) +
CRC32/poly=Koopman/size=32kB/align=0-8453MB/s ± 8%450MB/s ± 4%~(p=0.684 n=10+10) +
CRC32/poly=Koopman/size=32kB/align=1-8471MB/s ± 3%441MB/s ± 3%−6.25%(p=0.000 n=8+10) +
  +
+ + diff --git a/pkg/benchstatter/testdata/oldnewttest.golden b/pkg/benchstatter/testdata/oldnewttest.golden new file mode 100644 index 0000000..9ff4fb3 --- /dev/null +++ b/pkg/benchstatter/testdata/oldnewttest.golden @@ -0,0 +1,75 @@ +name old time/op new time/op delta +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.011 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.600 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.006 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.001 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.511 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.553 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.472 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.033 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.885 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.430 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.001 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.069 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.029 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.735 n=9+9) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.001 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.183 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.374 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.009 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% -3.35% (p=0.022 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.001 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.086 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.008 n=9+10) +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.849 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.678 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.730 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) + +name old speed new speed delta +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.010 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.600 n=10+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.005 n=8+10) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.001 n=9+10) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.469 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.599 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.469 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% +1.64% (p=0.035 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.872 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.391 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.001 n=9+8) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.071 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% +2.41% (p=0.033 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.797 n=9+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.001 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.203 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.306 n=10+9) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.008 n=10+10) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% +3.36% (p=0.024 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.001 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.096 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.065 n=10+10) +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.844 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.708 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.669 n=10+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) diff --git a/pkg/benchstatter/testdata/outputs/benchdiff-1.out b/pkg/benchstatter/testdata/outputs/benchdiff-1.out deleted file mode 100644 index f42516e..0000000 --- a/pkg/benchstatter/testdata/outputs/benchdiff-1.out +++ /dev/null @@ -1,15 +0,0 @@ -goos: darwin -goarch: amd64 -pkg: github.com/willabides/benchdiff/tmp/747290359 -BenchmarkDoNothing-8 10 11164321 ns/op 12 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10853508 ns/op 14 B/op 0 allocs/op -BenchmarkDoNothing-8 10 11656783 ns/op 11 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10700432 ns/op 12 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10427720 ns/op 12 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10712753 ns/op 11 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10662319 ns/op 11 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10506228 ns/op 12 B/op 0 allocs/op -BenchmarkDoNothing-8 10 11475983 ns/op 11 B/op 0 allocs/op -BenchmarkDoNothing-8 10 10771303 ns/op 11 B/op 0 allocs/op -PASS -ok github.com/willabides/benchdiff/tmp/747290359 1.223s diff --git a/pkg/benchstatter/testdata/outputs/benchdiff-worktree.out b/pkg/benchstatter/testdata/outputs/benchdiff-worktree.out deleted file mode 100644 index cce481c..0000000 --- a/pkg/benchstatter/testdata/outputs/benchdiff-worktree.out +++ /dev/null @@ -1,15 +0,0 @@ -goos: darwin -goarch: amd64 -pkg: github.com/willabides/benchdiff/tmp/747290359 -BenchmarkDoNothing-8 10 1146337 ns/op 37 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1249409 ns/op 33 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1382591 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1383354 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1272821 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1338119 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1252743 ns/op 33 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1335703 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1402933 ns/op 32 B/op 0 allocs/op -BenchmarkDoNothing-8 10 1378127 ns/op 32 B/op 0 allocs/op -PASS -ok github.com/willabides/benchdiff/tmp/747290359 0.171s diff --git a/pkg/benchstatter/testdata/packages.golden b/pkg/benchstatter/testdata/packages.golden new file mode 100644 index 0000000..05cf0c7 --- /dev/null +++ b/pkg/benchstatter/testdata/packages.golden @@ -0,0 +1,11 @@ +name old time/op new time/op delta +pkg:encoding/gob +GobEncode 13.6ms ± 1% 11.8ms ± 1% -13.31% (p=0.016 n=4+5) +pkg:encoding/json +JSONEncode 32.1ms ± 1% 31.8ms ± 1% ~ (p=0.286 n=4+5) + +name old speed new speed delta +pkg:encoding/gob +GobEncode 56.4MB/s ± 1% 65.1MB/s ± 1% +15.36% (p=0.016 n=4+5) +pkg:encoding/json +JSONEncode 60.4MB/s ± 1% 61.1MB/s ± 2% ~ (p=0.286 n=4+5) diff --git a/pkg/benchstatter/testdata/packagesnew.txt b/pkg/benchstatter/testdata/packagesnew.txt new file mode 100644 index 0000000..7732820 --- /dev/null +++ b/pkg/benchstatter/testdata/packagesnew.txt @@ -0,0 +1,12 @@ +pkg: encoding/gob +BenchmarkGobEncode 100 11773189 ns/op 65.19 MB/s +BenchmarkGobEncode 100 11942588 ns/op 64.27 MB/s +BenchmarkGobEncode 100 11786159 ns/op 65.12 MB/s +BenchmarkGobEncode 100 11628583 ns/op 66.00 MB/s +BenchmarkGobEncode 100 11815924 ns/op 64.96 MB/s +pkg: encoding/json +BenchmarkJSONEncode 50 32036529 ns/op 60.57 MB/s +BenchmarkJSONEncode 50 32156552 ns/op 60.34 MB/s +BenchmarkJSONEncode 50 31288355 ns/op 62.02 MB/s +BenchmarkJSONEncode 50 31559706 ns/op 61.49 MB/s +BenchmarkJSONEncode 50 31765634 ns/op 61.09 MB/s diff --git a/pkg/benchstatter/testdata/packagesold.txt b/pkg/benchstatter/testdata/packagesold.txt new file mode 100644 index 0000000..add4b7a --- /dev/null +++ b/pkg/benchstatter/testdata/packagesold.txt @@ -0,0 +1,10 @@ +pkg: encoding/gob +BenchmarkGobEncode 100 13552735 ns/op 56.63 MB/s +BenchmarkGobEncode 100 13553943 ns/op 56.63 MB/s +BenchmarkGobEncode 100 13606356 ns/op 56.41 MB/s +BenchmarkGobEncode 100 13683198 ns/op 56.09 MB/s +pkg: encoding/json +BenchmarkJSONEncode 50 32395067 ns/op 59.90 MB/s +BenchmarkJSONEncode 50 32334214 ns/op 60.01 MB/s +BenchmarkJSONEncode 50 31992891 ns/op 60.65 MB/s +BenchmarkJSONEncode 50 31735022 ns/op 61.15 MB/s diff --git a/pkg/benchstatter/testdata/rdeltasort.golden b/pkg/benchstatter/testdata/rdeltasort.golden new file mode 100644 index 0000000..d74cce4 --- /dev/null +++ b/pkg/benchstatter/testdata/rdeltasort.golden @@ -0,0 +1,75 @@ +name old time/op new time/op delta +CRC32/poly=IEEE/size=32kB/align=0-8 15.0µs ± 7% 2.2µs ± 3% -85.57% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 14.2µs ± 7% 2.2µs ± 3% -84.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=4kB/align=1-8 1.76µs ± 6% 0.30µs ± 3% -83.05% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=4kB/align=0-8 1.74µs ± 8% 0.30µs ± 1% -82.87% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=1kB/align=0-8 452ns ± 4% 94ns ± 2% -79.20% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 444ns ± 2% 93ns ± 2% -78.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=512/align=0-8 238ns ± 5% 57ns ± 3% -76.00% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 236ns ± 3% 57ns ± 3% -75.72% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=15/align=0-8 46.9ns ± 8% 44.5ns ± 3% -5.01% (p=0.008 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 1.13µs ± 5% 1.08µs ± 3% -4.93% (p=0.000 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 169ns ± 6% 162ns ± 3% -4.60% (p=0.005 n=10+10) +CRC32/poly=Koopman/size=40/align=0-8 91.6ns ± 9% 87.6ns ± 2% -4.35% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 1.26µs ± 3% 1.22µs ± 4% -3.48% (p=0.002 n=9+10) +CRC32/poly=Castagnoli/size=4kB/align=0-8 163ns ± 5% 159ns ± 3% -2.46% (p=0.032 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 19.7ns ± 3% 19.4ns ± 2% -1.62% (p=0.036 n=10+10) +CRC32/poly=IEEE/size=15/align=1-8 44.7ns ± 5% 44.5ns ± 4% ~ (p=0.539 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 16.4ns ± 3% 16.3ns ± 2% ~ (p=0.615 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 17.2ns ± 2% 17.3ns ± 2% ~ (p=0.650 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 17.4ns ± 2% 17.5ns ± 4% ~ (p=0.694 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 40.2ns ± 2% 40.1ns ± 4% ~ (p=0.614 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 42.1ns ± 3% 41.9ns ± 2% ~ (p=0.952 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=1-8 70.1ns ± 6% 68.5ns ± 2% ~ (p=0.190 n=10+9) +CRC32/poly=Castagnoli/size=32kB/align=0-8 1.22µs ± 4% 1.21µs ± 3% ~ (p=0.882 n=9+9) +CRC32/poly=Koopman/size=15/align=0-8 36.5ns ±11% 35.6ns ± 3% ~ (p=0.216 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 35.1ns ± 5% 35.5ns ± 1% ~ (p=0.508 n=10+9) +CRC32/poly=Koopman/size=40/align=1-8 91.1ns ± 6% 88.0ns ± 3% ~ (p=0.055 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 1.13µs ± 6% 1.17µs ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 9.03µs ± 6% 9.00µs ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 8.94µs ±10% 9.05µs ±12% ~ (p=0.754 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 72.4µs ± 9% 72.9µs ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 65.5ns ± 1% 66.2ns ± 1% +1.01% (p=0.003 n=9+8) +CRC32/poly=IEEE/size=40/align=1-8 41.1ns ± 1% 42.0ns ± 3% +2.34% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=40/align=0-8 41.0ns ± 1% 42.5ns ± 6% +3.56% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=1kB/align=0-8 2.24µs ± 6% 2.34µs ± 4% +4.34% (p=0.010 n=9+10) +CRC32/poly=Koopman/size=32kB/align=1-8 69.6µs ± 3% 74.3µs ± 3% +6.70% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=1kB/align=1-8 2.15µs ± 2% 2.36µs ± 5% +9.84% (p=0.000 n=9+10) + +name old speed new speed delta +CRC32/poly=IEEE/size=32kB/align=0-8 2.19GB/s ± 7% 15.19GB/s ± 3% +591.99% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=32kB/align=1-8 2.31GB/s ± 8% 15.04GB/s ± 3% +550.07% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=4kB/align=1-8 2.33GB/s ± 6% 13.68GB/s ± 3% +488.23% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=4kB/align=0-8 2.36GB/s ± 7% 13.73GB/s ± 1% +482.26% (p=0.000 n=10+9) +CRC32/poly=IEEE/size=1kB/align=0-8 2.26GB/s ± 4% 10.88GB/s ± 2% +381.12% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=1kB/align=1-8 2.31GB/s ± 2% 10.98GB/s ± 2% +375.97% (p=0.000 n=10+8) +CRC32/poly=IEEE/size=512/align=0-8 2.15GB/s ± 4% 8.97GB/s ± 3% +317.65% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=512/align=1-8 2.17GB/s ± 3% 8.96GB/s ± 3% +312.89% (p=0.000 n=10+10) +CRC32/poly=Koopman/size=512/align=0-8 453MB/s ± 5% 476MB/s ± 3% +5.09% (p=0.000 n=10+10) +CRC32/poly=IEEE/size=15/align=0-8 321MB/s ± 8% 337MB/s ± 3% +5.06% (p=0.009 n=10+10) +CRC32/poly=Castagnoli/size=4kB/align=1-8 24.1GB/s ± 6% 25.3GB/s ± 3% +4.71% (p=0.005 n=10+10) +CRC32/poly=Koopman/size=40/align=0-8 437MB/s ± 9% 456MB/s ± 2% +4.50% (p=0.002 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=1-8 25.9GB/s ± 3% 26.8GB/s ± 4% +3.62% (p=0.002 n=9+10) +CRC32/poly=IEEE/size=15/align=1-8 336MB/s ± 4% 337MB/s ± 4% ~ (p=0.579 n=10+10) +CRC32/poly=Castagnoli/size=15/align=0-8 916MB/s ± 2% 920MB/s ± 2% ~ (p=0.489 n=9+9) +CRC32/poly=Castagnoli/size=15/align=1-8 870MB/s ± 2% 867MB/s ± 2% ~ (p=0.661 n=9+10) +CRC32/poly=Castagnoli/size=40/align=0-8 2.30GB/s ± 2% 2.28GB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=40/align=1-8 2.03GB/s ± 3% 2.06GB/s ± 2% ~ (p=0.063 n=10+10) +CRC32/poly=Castagnoli/size=512/align=0-8 12.7GB/s ± 2% 12.8GB/s ± 4% ~ (p=0.529 n=10+10) +CRC32/poly=Castagnoli/size=512/align=1-8 12.1GB/s ± 3% 12.2GB/s ± 1% ~ (p=0.780 n=10+9) +CRC32/poly=Castagnoli/size=1kB/align=1-8 14.6GB/s ± 6% 15.0GB/s ± 2% ~ (p=0.211 n=10+9) +CRC32/poly=Castagnoli/size=4kB/align=0-8 25.1GB/s ± 5% 25.7GB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Castagnoli/size=32kB/align=0-8 26.9GB/s ± 4% 26.8GB/s ± 5% ~ (p=0.842 n=9+10) +CRC32/poly=Koopman/size=15/align=0-8 412MB/s ±10% 421MB/s ± 3% ~ (p=0.218 n=10+10) +CRC32/poly=Koopman/size=15/align=1-8 427MB/s ± 5% 422MB/s ± 1% ~ (p=0.497 n=10+9) +CRC32/poly=Koopman/size=40/align=1-8 440MB/s ± 6% 455MB/s ± 3% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=512/align=1-8 455MB/s ± 6% 440MB/s ± 8% ~ (p=0.143 n=10+10) +CRC32/poly=Koopman/size=1kB/align=0-8 452MB/s ± 9% 438MB/s ± 4% ~ (p=0.052 n=10+10) +CRC32/poly=Koopman/size=4kB/align=0-8 454MB/s ± 5% 455MB/s ± 6% ~ (p=0.971 n=10+10) +CRC32/poly=Koopman/size=4kB/align=1-8 459MB/s ± 9% 455MB/s ±11% ~ (p=0.739 n=10+10) +CRC32/poly=Koopman/size=32kB/align=0-8 453MB/s ± 8% 450MB/s ± 4% ~ (p=0.684 n=10+10) +CRC32/poly=Castagnoli/size=1kB/align=0-8 15.6GB/s ± 1% 15.5GB/s ± 1% -1.02% (p=0.002 n=9+8) +CRC32/poly=IEEE/size=40/align=1-8 974MB/s ± 1% 952MB/s ± 3% -2.25% (p=0.000 n=9+10) +CRC32/poly=IEEE/size=40/align=0-8 975MB/s ± 1% 942MB/s ± 5% -3.37% (p=0.001 n=8+10) +CRC32/poly=Koopman/size=32kB/align=1-8 471MB/s ± 3% 441MB/s ± 3% -6.25% (p=0.000 n=8+10) +CRC32/poly=Koopman/size=1kB/align=1-8 477MB/s ± 2% 434MB/s ± 5% -8.92% (p=0.000 n=9+10) diff --git a/pkg/benchstatter/testdata/slashslash4.txt b/pkg/benchstatter/testdata/slashslash4.txt new file mode 100644 index 0000000..509c0d1 --- /dev/null +++ b/pkg/benchstatter/testdata/slashslash4.txt @@ -0,0 +1,127 @@ +pkg: hash/crc32 +goarch: amd64 +goos: darwin +note: hw acceleration disabled, -bench=//4 + +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 40.9 ns/op 978.88 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.8 ns/op 933.98 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 40.9 ns/op 978.23 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.4 ns/op 942.76 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.4 ns/op 967.26 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 41.6 ns/op 962.08 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.6 ns/op 939.29 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 43.5 ns/op 918.83 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.0 ns/op 951.27 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=0-8 3000000 42.7 ns/op 937.30 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.1 ns/op 973.19 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 43.6 ns/op 918.29 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.8 ns/op 934.58 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.0 ns/op 975.00 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.2 ns/op 970.18 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.8 ns/op 980.81 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 42.4 ns/op 942.44 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.4 ns/op 966.71 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 40.7 ns/op 982.65 MB/s +BenchmarkCRC32/poly=IEEE/size=40/align=1-8 3000000 41.8 ns/op 955.93 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1807 ns/op 2266.51 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1668 ns/op 2454.61 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1718 ns/op 2383.22 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1675 ns/op 2445.28 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1682 ns/op 2434.60 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1673 ns/op 2448.24 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1672 ns/op 2449.03 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1693 ns/op 2419.16 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1658 ns/op 2469.45 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8 100000 1699 ns/op 2410.39 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1699 ns/op 2409.64 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1677 ns/op 2441.13 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1671 ns/op 2450.93 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1666 ns/op 2457.51 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1757 ns/op 2330.39 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1666 ns/op 2457.84 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1716 ns/op 2386.93 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1662 ns/op 2464.20 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1703 ns/op 2404.35 MB/s +BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8 100000 1681 ns/op 2436.35 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.1 ns/op 2334.91 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.5 ns/op 2288.87 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.8 ns/op 2244.89 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 17.3 ns/op 2311.76 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 18.0 ns/op 2224.01 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 20.7 ns/op 1933.54 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 19.3 ns/op 2073.61 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 19.3 ns/op 2067.47 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 19.9 ns/op 2011.31 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8 10000000 18.9 ns/op 2117.00 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.9 ns/op 2005.75 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.5 ns/op 2049.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.2 ns/op 2081.60 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 20.0 ns/op 1996.42 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.4 ns/op 2066.66 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.8 ns/op 2025.21 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.8 ns/op 2015.13 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 21.2 ns/op 1888.37 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 19.5 ns/op 2046.76 MB/s +BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8 10000000 22.3 ns/op 1796.24 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 174 ns/op 23478.39 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 158 ns/op 25880.52 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 164 ns/op 24857.78 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26150.67 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26185.14 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 161 ns/op 25366.49 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 164 ns/op 24930.88 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 156 ns/op 26209.59 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 161 ns/op 25376.24 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8 1000000 162 ns/op 25281.02 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 168 ns/op 24280.72 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 166 ns/op 24653.32 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 163 ns/op 24991.81 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 158 ns/op 25826.99 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 162 ns/op 25188.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 164 ns/op 24970.03 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 179 ns/op 22771.21 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 176 ns/op 23182.06 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 184 ns/op 22193.41 MB/s +BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8 1000000 176 ns/op 23191.10 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 1000000 106 ns/op 376.78 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 1000000 102 ns/op 391.07 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 99.7 ns/op 401.12 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 95.6 ns/op 418.47 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 93.3 ns/op 428.76 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 90.5 ns/op 441.87 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 92.1 ns/op 434.22 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 85.6 ns/op 467.07 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 87.6 ns/op 456.72 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=0-8 2000000 85.7 ns/op 466.53 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 85.6 ns/op 467.12 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 86.1 ns/op 464.59 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 85.5 ns/op 467.95 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 86.5 ns/op 462.44 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 89.8 ns/op 445.20 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 86.4 ns/op 463.14 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 85.8 ns/op 466.27 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.7 ns/op 456.34 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 88.0 ns/op 454.78 MB/s +BenchmarkCRC32/poly=Koopman/size=40/align=1-8 2000000 87.2 ns/op 458.77 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8373 ns/op 489.18 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8397 ns/op 487.76 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9496 ns/op 431.31 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9426 ns/op 434.52 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9035 ns/op 453.33 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9295 ns/op 440.65 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9220 ns/op 444.22 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9539 ns/op 429.37 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 8401 ns/op 487.53 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=0-8 20000 9634 ns/op 425.14 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9591 ns/op 427.02 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9878 ns/op 414.64 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9630 ns/op 425.32 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9284 ns/op 441.18 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8676 ns/op 472.10 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 8844 ns/op 463.13 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9621 ns/op 425.72 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9364 ns/op 437.38 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9993 ns/op 409.85 MB/s +BenchmarkCRC32/poly=Koopman/size=4kB/align=1-8 20000 9671 ns/op 423.50 MB/s +PASS +ok hash/crc32 25.585s diff --git a/pkg/benchstatter/testdata/units-new.txt b/pkg/benchstatter/testdata/units-new.txt new file mode 100644 index 0000000..397088d --- /dev/null +++ b/pkg/benchstatter/testdata/units-new.txt @@ -0,0 +1,8 @@ +pkg: synthetic +note: test benchstat printing of units + +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14100000000000 user-ns/op 5 ns/GC 12 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14700000000000 user-ns/op 5 ns/GC 16 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14800000000000 user-ns/op 5 ns/GC 12 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14300000000000 user-ns/op 5 ns/GC 16 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14000000000000 user-ns/op 5 ns/GC 12 quick-bytes diff --git a/pkg/benchstatter/testdata/units-old.txt b/pkg/benchstatter/testdata/units-old.txt new file mode 100644 index 0000000..6e87b07 --- /dev/null +++ b/pkg/benchstatter/testdata/units-old.txt @@ -0,0 +1,8 @@ +pkg: synthetic +note: test benchstat printing of units + +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14400000000000 user-ns/op 5 ns/GC 12 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14500000000000 user-ns/op 5 ns/GC 16 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14600000000000 user-ns/op 5 ns/GC 12 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14200000000000 user-ns/op 5 ns/GC 16 quick-bytes +BenchmarkTwoHourMarathon 1 7200000000000 ns/op 14300000000000 user-ns/op 5 ns/GC 12 quick-bytes diff --git a/pkg/benchstatter/testdata/units.golden b/pkg/benchstatter/testdata/units.golden new file mode 100644 index 0000000..3a5ca67 --- /dev/null +++ b/pkg/benchstatter/testdata/units.golden @@ -0,0 +1,11 @@ +name old time/op new time/op delta +TwoHourMarathon 7200s ± 0% 7200s ± 0% ~ (all equal) + +name old user-time/op new user-time/op delta +TwoHourMarathon 14400s ± 1% 14380s ± 3% ~ (p=0.881 n=5+5) + +name old time/GC new time/GC delta +TwoHourMarathon 5.00ns ± 0% 5.00ns ± 0% ~ (all equal) + +name old quick-bytes new quick-bytes delta +TwoHourMarathon 13.6B ±18% 13.6B ±18% ~ (p=1.000 n=5+5) diff --git a/pkg/benchstatter/testdata/zero-new.txt b/pkg/benchstatter/testdata/zero-new.txt new file mode 100644 index 0000000..d855b6b --- /dev/null +++ b/pkg/benchstatter/testdata/zero-new.txt @@ -0,0 +1,4 @@ +pkg: synthetic +note: test benchstat printing of zeros + +BenchmarkImperceptible 1 1234567890 a-bytes 171717171716 b-bytes 99999930 c-bytes diff --git a/pkg/benchstatter/testdata/zero-old.txt b/pkg/benchstatter/testdata/zero-old.txt new file mode 100644 index 0000000..9df0d06 --- /dev/null +++ b/pkg/benchstatter/testdata/zero-old.txt @@ -0,0 +1,4 @@ +pkg: synthetic +note: test benchstat printing of zeros + +BenchmarkImperceptible 1 1234567890 a-bytes 171717171717 b-bytes 99999929 c-bytes diff --git a/pkg/benchstatter/testdata/zero.golden b/pkg/benchstatter/testdata/zero.golden new file mode 100644 index 0000000..7c6170f --- /dev/null +++ b/pkg/benchstatter/testdata/zero.golden @@ -0,0 +1,8 @@ +name old a-bytes new a-bytes delta +Imperceptible 1.23GB ± 0% 1.23GB ± 0% 0.00% + +name old b-bytes new b-bytes delta +Imperceptible 172GB ± 0% 172GB ± 0% -0.00% + +name old c-bytes new c-bytes delta +Imperceptible 100MB ± 0% 100MB ± 0% +0.00%