Commit a7cba317 authored by Russ Cox's avatar Russ Cox

cmd/benchstat: add basic golden test

Change-Id: I778bee598aa32c213ccfa956f63e8b55360e99ae
Reviewed-on: https://go-review.googlesource.com/35932
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: default avatarQuentin Smith <quentin@golang.org>
parent 8d487eb4
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"bytes"
"io/ioutil"
"os"
"os/exec"
"testing"
)
func TestGolden(t *testing.T) {
if err := os.Chdir("testdata"); err != nil {
t.Fatal(err)
}
defer os.Chdir("..")
check(t, "exampleold", "exampleold.txt")
check(t, "example", "exampleold.txt", "examplenew.txt")
if t.Failed() {
t.Fatal("skipping other tests")
}
check(t, "examplehtml", "-html", "exampleold.txt", "examplenew.txt")
if t.Failed() {
t.Fatal("skipping other tests")
}
check(t, "all", "new.txt", "old.txt", "slashslash4.txt", "x386.txt")
check(t, "oldnew", "old.txt", "new.txt")
check(t, "oldnewgeo", "-geomean", "old.txt", "new.txt")
check(t, "new4", "new.txt", "slashslash4.txt")
check(t, "oldnewhtml", "-html", "old.txt", "new.txt")
check(t, "oldnew4html", "-html", "old.txt", "new.txt", "slashslash4.txt")
check(t, "oldnewttest", "-delta-test=ttest", "old.txt", "new.txt")
}
func check(t *testing.T, name string, files ...string) {
t.Run(name, func(t *testing.T) {
os.Args = append([]string{"benchstat"}, files...)
r, w, err := os.Pipe()
if err != nil {
t.Fatal(err)
}
c := make(chan []byte)
go func() {
data, err := ioutil.ReadAll(r)
if err != nil {
t.Error(err)
}
c <- data
}()
stdout := os.Stdout
stderr := os.Stderr
os.Stdout = w
os.Stderr = w
*flagGeomean = false
*flagHTML = false
*flagDeltaTest = "utest"
main()
w.Close()
os.Stdout = stdout
os.Stderr = stderr
data := <-c
golden, err := ioutil.ReadFile(name + ".golden")
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(data, golden) {
t.Errorf("wrong output: diff have want:\n%s", diff(t, data, golden))
}
})
}
// diff returns the output of 'diff -u old new'.
func diff(t *testing.T, old, new []byte) string {
data, err := exec.Command("diff", "-u", writeTemp(t, old), writeTemp(t, new)).CombinedOutput()
if len(data) > 0 {
return string(data)
}
return "ERROR: " + err.Error()
}
func writeTemp(t *testing.T, data []byte) string {
f, err := ioutil.TempFile("", "benchstat_test")
if err != nil {
t.Fatal(err)
}
f.Write(data)
name := f.Name()
f.Close()
return name
}
name \ time/op new.txt old.txt slashslash4.txt x386.txt
CRC32/poly=IEEE/size=15/align=0-8 44.5ns ± 3% 46.9ns ± 8% 62.4ns ± 9%
CRC32/poly=IEEE/size=15/align=1-8 44.5ns ± 4% 44.7ns ± 5% 63.5ns ± 8%
CRC32/poly=IEEE/size=40/align=0-8 42.5ns ± 6% 41.0ns ± 1% 42.1ns ± 3% 57.4ns ± 3%
CRC32/poly=IEEE/size=40/align=1-8 42.0ns ± 3% 41.1ns ± 1% 41.7ns ± 5% 57.3ns ± 3%
CRC32/poly=IEEE/size=512/align=0-8 57.1ns ± 3% 238.0ns ± 5% 332.3ns ± 2%
CRC32/poly=IEEE/size=512/align=1-8 57.2ns ± 3% 235.5ns ± 3% 335.3ns ± 3%
CRC32/poly=IEEE/size=1kB/align=0-8 94.1ns ± 2% 452.5ns ± 4% 626.3ns ± 2%
CRC32/poly=IEEE/size=1kB/align=1-8 93.3ns ± 2% 443.6ns ± 2% 635.3ns ± 6%
CRC32/poly=IEEE/size=4kB/align=0-8 298ns ± 1% 1740ns ± 8% 1682ns ± 2% 2457ns ± 7%
CRC32/poly=IEEE/size=4kB/align=1-8 299ns ± 3% 1764ns ± 6% 1690ns ± 4% 2434ns ± 5%
CRC32/poly=IEEE/size=32kB/align=0-8 2.16µs ± 3% 14.95µs ± 7% 19.15µs ± 4%
CRC32/poly=IEEE/size=32kB/align=1-8 2.18µs ± 3% 14.19µs ± 7% 19.42µs ± 5%
CRC32/poly=Castagnoli/size=15/align=0-8 16.3ns ± 2% 16.4ns ± 3% 59.4ns ± 1%
CRC32/poly=Castagnoli/size=15/align=1-8 17.3ns ± 2% 17.2ns ± 2% 59.4ns ± 2%
CRC32/poly=Castagnoli/size=40/align=0-8 17.5ns ± 4% 17.4ns ± 2% 18.6ns ±11% 59.7ns ± 6%
CRC32/poly=Castagnoli/size=40/align=1-8 19.4ns ± 2% 19.7ns ± 3% 19.6ns ± 2% 58.1ns ± 7%
CRC32/poly=Castagnoli/size=512/align=0-8 40.1ns ± 4% 40.2ns ± 2% 350.8ns ± 5%
CRC32/poly=Castagnoli/size=512/align=1-8 41.9ns ± 2% 42.1ns ± 3% 349.8ns ± 7%
CRC32/poly=Castagnoli/size=1kB/align=0-8 66.2ns ± 1% 65.5ns ± 1% 656.7ns ± 4%
CRC32/poly=Castagnoli/size=1kB/align=1-8 68.5ns ± 2% 70.1ns ± 6% 656.8ns ± 6%
CRC32/poly=Castagnoli/size=4kB/align=0-8 159ns ± 3% 163ns ± 5% 161ns ± 8% 2452ns ± 4%
CRC32/poly=Castagnoli/size=4kB/align=1-8 162ns ± 3% 169ns ± 6% 170ns ± 8% 2448ns ± 5%
CRC32/poly=Castagnoli/size=32kB/align=0-8 1.21µs ± 3% 1.22µs ± 4% 20.53µs ± 5%
CRC32/poly=Castagnoli/size=32kB/align=1-8 1.22µs ± 4% 1.26µs ± 3% 20.18µs ± 9%
CRC32/poly=Koopman/size=15/align=0-8 35.6ns ± 3% 36.5ns ±11% 58.2ns ± 4%
CRC32/poly=Koopman/size=15/align=1-8 35.5ns ± 1% 35.1ns ± 5% 56.4ns ± 7%
CRC32/poly=Koopman/size=40/align=0-8 87.6ns ± 2% 91.6ns ± 9% 93.8ns ±13% 142.3ns ± 8%
CRC32/poly=Koopman/size=40/align=1-8 88.0ns ± 3% 91.1ns ± 6% 86.9ns ± 3% 136.2ns ± 5%
CRC32/poly=Koopman/size=512/align=0-8 1.08µs ± 3% 1.13µs ± 5% 1.68µs ± 5%
CRC32/poly=Koopman/size=512/align=1-8 1.17µs ± 8% 1.13µs ± 6% 1.64µs ± 4%
CRC32/poly=Koopman/size=1kB/align=0-8 2.34µs ± 4% 2.24µs ± 6% 3.31µs ± 4%
CRC32/poly=Koopman/size=1kB/align=1-8 2.36µs ± 5% 2.15µs ± 2% 3.28µs ± 3%
CRC32/poly=Koopman/size=4kB/align=0-8 9.00µs ± 6% 9.03µs ± 6% 9.08µs ± 8% 13.32µs ± 3%
CRC32/poly=Koopman/size=4kB/align=1-8 9.05µs ±12% 8.94µs ±10% 9.46µs ± 8% 13.16µs ± 3%
CRC32/poly=Koopman/size=32kB/align=0-8 72.9µs ± 4% 72.4µs ± 9% 106.9µs ± 6%
CRC32/poly=Koopman/size=32kB/align=1-8 74.3µs ± 3% 69.6µs ± 3% 106.1µs ± 4%
name \ speed new.txt old.txt slashslash4.txt x386.txt
CRC32/poly=IEEE/size=15/align=0-8 337MB/s ± 3% 321MB/s ± 8% 241MB/s ± 8%
CRC32/poly=IEEE/size=15/align=1-8 337MB/s ± 4% 336MB/s ± 4% 237MB/s ± 8%
CRC32/poly=IEEE/size=40/align=0-8 942MB/s ± 5% 975MB/s ± 1% 951MB/s ± 3% 696MB/s ± 3%
CRC32/poly=IEEE/size=40/align=1-8 952MB/s ± 3% 974MB/s ± 1% 960MB/s ± 4% 698MB/s ± 3%
CRC32/poly=IEEE/size=512/align=0-8 8.97GB/s ± 3% 2.15GB/s ± 4% 1.54GB/s ± 2%
CRC32/poly=IEEE/size=512/align=1-8 8.96GB/s ± 3% 2.17GB/s ± 3% 1.52GB/s ± 3%
CRC32/poly=IEEE/size=1kB/align=0-8 10.9GB/s ± 2% 2.3GB/s ± 4% 1.6GB/s ± 2%
CRC32/poly=IEEE/size=1kB/align=1-8 11.0GB/s ± 2% 2.3GB/s ± 2% 1.6GB/s ± 6%
CRC32/poly=IEEE/size=4kB/align=0-8 13.7GB/s ± 1% 2.4GB/s ± 7% 2.4GB/s ± 2% 1.7GB/s ± 7%
CRC32/poly=IEEE/size=4kB/align=1-8 13.7GB/s ± 3% 2.3GB/s ± 6% 2.4GB/s ± 4% 1.7GB/s ± 5%
CRC32/poly=IEEE/size=32kB/align=0-8 15.2GB/s ± 3% 2.2GB/s ± 7% 1.7GB/s ± 4%
CRC32/poly=IEEE/size=32kB/align=1-8 15.0GB/s ± 3% 2.3GB/s ± 8% 1.7GB/s ± 5%
CRC32/poly=Castagnoli/size=15/align=0-8 920MB/s ± 2% 916MB/s ± 2% 253MB/s ± 1%
CRC32/poly=Castagnoli/size=15/align=1-8 867MB/s ± 2% 870MB/s ± 2% 253MB/s ± 2%
CRC32/poly=Castagnoli/size=40/align=0-8 2.28GB/s ± 4% 2.30GB/s ± 2% 2.16GB/s ±11% 0.67GB/s ± 6%
CRC32/poly=Castagnoli/size=40/align=1-8 2.06GB/s ± 2% 2.03GB/s ± 3% 2.04GB/s ± 2% 0.69GB/s ± 6%
CRC32/poly=Castagnoli/size=512/align=0-8 12.8GB/s ± 4% 12.7GB/s ± 2% 1.5GB/s ± 5%
CRC32/poly=Castagnoli/size=512/align=1-8 12.2GB/s ± 1% 12.1GB/s ± 3% 1.5GB/s ± 7%
CRC32/poly=Castagnoli/size=1kB/align=0-8 15.5GB/s ± 1% 15.6GB/s ± 1% 1.6GB/s ± 4%
CRC32/poly=Castagnoli/size=1kB/align=1-8 15.0GB/s ± 2% 14.6GB/s ± 6% 1.6GB/s ± 5%
CRC32/poly=Castagnoli/size=4kB/align=0-8 25.7GB/s ± 3% 25.1GB/s ± 5% 25.4GB/s ± 7% 1.7GB/s ± 4%
CRC32/poly=Castagnoli/size=4kB/align=1-8 25.3GB/s ± 3% 24.1GB/s ± 6% 24.1GB/s ± 8% 1.7GB/s ± 5%
CRC32/poly=Castagnoli/size=32kB/align=0-8 26.8GB/s ± 5% 26.9GB/s ± 4% 1.6GB/s ± 5%
CRC32/poly=Castagnoli/size=32kB/align=1-8 26.8GB/s ± 4% 25.9GB/s ± 3% 1.6GB/s ± 8%
CRC32/poly=Koopman/size=15/align=0-8 421MB/s ± 3% 412MB/s ±10% 258MB/s ± 5%
CRC32/poly=Koopman/size=15/align=1-8 422MB/s ± 1% 427MB/s ± 5% 266MB/s ± 6%
CRC32/poly=Koopman/size=40/align=0-8 456MB/s ± 2% 437MB/s ± 9% 428MB/s ±12% 281MB/s ± 7%
CRC32/poly=Koopman/size=40/align=1-8 455MB/s ± 3% 440MB/s ± 6% 461MB/s ± 3% 290MB/s ± 8%
CRC32/poly=Koopman/size=512/align=0-8 476MB/s ± 3% 453MB/s ± 5% 304MB/s ± 5%
CRC32/poly=Koopman/size=512/align=1-8 440MB/s ± 8% 455MB/s ± 6% 312MB/s ± 3%
CRC32/poly=Koopman/size=1kB/align=0-8 438MB/s ± 4% 452MB/s ± 9% 310MB/s ± 4%
CRC32/poly=Koopman/size=1kB/align=1-8 434MB/s ± 5% 477MB/s ± 2% 312MB/s ± 3%
CRC32/poly=Koopman/size=4kB/align=0-8 455MB/s ± 6% 454MB/s ± 5% 452MB/s ± 8% 308MB/s ± 3%
CRC32/poly=Koopman/size=4kB/align=1-8 455MB/s ±11% 459MB/s ± 9% 434MB/s ± 9% 311MB/s ± 3%
CRC32/poly=Koopman/size=32kB/align=0-8 450MB/s ± 4% 453MB/s ± 8% 307MB/s ± 6%
CRC32/poly=Koopman/size=32kB/align=1-8 441MB/s ± 3% 471MB/s ± 3% 309MB/s ± 4%
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)
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name</th><th>old time/op</th><th>new time/op</th><th>delta</th>
<tr><td>GobEncode</td><td>13.6ms ± 1%</td><td>11.8ms ± 1%</td><td>-13.31%</td><td>(p=0.016 n=4+5)</td>
<tr><td>JSONEncode</td><td>32.1ms ± 1%</td><td>31.8ms ± 1%</td><td>~ </td><td>(p=0.286 n=4+5)</td>
</table>
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name</th><th>old speed</th><th>new speed</th><th>delta</th>
<tr><td>GobEncode</td><td>56.4MB/s ± 1%</td><td>65.1MB/s ± 1%</td><td>+15.36%</td><td>(p=0.016 n=4+5)</td>
<tr><td>JSONEncode</td><td>60.4MB/s ± 1%</td><td>61.1MB/s ± 2%</td><td>~ </td><td>(p=0.286 n=4+5)</td>
</table>
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
name time/op
GobEncode 13.6ms ± 1%
JSONEncode 32.1ms ± 1%
name speed
GobEncode 56.4MB/s ± 1%
JSONEncode 60.4MB/s ± 1%
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
This diff is collapsed.
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)
This diff is collapsed.
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)
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name \ time/op</th><th>old.txt</th><th>new.txt</th><th>slashslash4.txt</th>
<tr><td>CRC32/poly=IEEE/size=15/align=0-8</td><td>46.9ns ± 8%</td><td>44.5ns ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=15/align=1-8</td><td>44.7ns ± 5%</td><td>44.5ns ± 4%</td>
<tr><td>CRC32/poly=IEEE/size=40/align=0-8</td><td>41.0ns ± 1%</td><td>42.5ns ± 6%</td><td>42.1ns ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=40/align=1-8</td><td>41.1ns ± 1%</td><td>42.0ns ± 3%</td><td>41.7ns ± 5%</td>
<tr><td>CRC32/poly=IEEE/size=512/align=0-8</td><td>238ns ± 5%</td><td>57ns ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=512/align=1-8</td><td>236ns ± 3%</td><td>57ns ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=0-8</td><td>452ns ± 4%</td><td>94ns ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=1-8</td><td>444ns ± 2%</td><td>93ns ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=0-8</td><td>1.74µs ± 8%</td><td>0.30µs ± 1%</td><td>1.68µs ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=1-8</td><td>1.76µs ± 6%</td><td>0.30µs ± 3%</td><td>1.69µs ± 4%</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=0-8</td><td>15.0µs ± 7%</td><td>2.2µs ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=1-8</td><td>14.2µs ± 7%</td><td>2.2µs ± 3%</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=0-8</td><td>16.4ns ± 3%</td><td>16.3ns ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=1-8</td><td>17.2ns ± 2%</td><td>17.3ns ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=0-8</td><td>17.4ns ± 2%</td><td>17.5ns ± 4%</td><td>18.6ns ±11%</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=1-8</td><td>19.7ns ± 3%</td><td>19.4ns ± 2%</td><td>19.6ns ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=0-8</td><td>40.2ns ± 2%</td><td>40.1ns ± 4%</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=1-8</td><td>42.1ns ± 3%</td><td>41.9ns ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=0-8</td><td>65.5ns ± 1%</td><td>66.2ns ± 1%</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=1-8</td><td>70.1ns ± 6%</td><td>68.5ns ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=0-8</td><td>163ns ± 5%</td><td>159ns ± 3%</td><td>161ns ± 8%</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=1-8</td><td>169ns ± 6%</td><td>162ns ± 3%</td><td>170ns ± 8%</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=0-8</td><td>1.22µs ± 4%</td><td>1.21µs ± 3%</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=1-8</td><td>1.26µs ± 3%</td><td>1.22µs ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=15/align=0-8</td><td>36.5ns ±11%</td><td>35.6ns ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=15/align=1-8</td><td>35.1ns ± 5%</td><td>35.5ns ± 1%</td>
<tr><td>CRC32/poly=Koopman/size=40/align=0-8</td><td>91.6ns ± 9%</td><td>87.6ns ± 2%</td><td>93.8ns ±13%</td>
<tr><td>CRC32/poly=Koopman/size=40/align=1-8</td><td>91.1ns ± 6%</td><td>88.0ns ± 3%</td><td>86.9ns ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=512/align=0-8</td><td>1.13µs ± 5%</td><td>1.08µs ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=512/align=1-8</td><td>1.13µs ± 6%</td><td>1.17µs ± 8%</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=0-8</td><td>2.24µs ± 6%</td><td>2.34µs ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=1-8</td><td>2.15µs ± 2%</td><td>2.36µs ± 5%</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=0-8</td><td>9.03µs ± 6%</td><td>9.00µs ± 6%</td><td>9.08µs ± 8%</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=1-8</td><td>8.94µs ±10%</td><td>9.05µs ±12%</td><td>9.46µs ± 8%</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=0-8</td><td>72.4µs ± 9%</td><td>72.9µs ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=1-8</td><td>69.6µs ± 3%</td><td>74.3µs ± 3%</td>
</table>
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name \ speed</th><th>old.txt</th><th>new.txt</th><th>slashslash4.txt</th>
<tr><td>CRC32/poly=IEEE/size=15/align=0-8</td><td>321MB/s ± 8%</td><td>337MB/s ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=15/align=1-8</td><td>336MB/s ± 4%</td><td>337MB/s ± 4%</td>
<tr><td>CRC32/poly=IEEE/size=40/align=0-8</td><td>975MB/s ± 1%</td><td>942MB/s ± 5%</td><td>951MB/s ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=40/align=1-8</td><td>974MB/s ± 1%</td><td>952MB/s ± 3%</td><td>960MB/s ± 4%</td>
<tr><td>CRC32/poly=IEEE/size=512/align=0-8</td><td>2.15GB/s ± 4%</td><td>8.97GB/s ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=512/align=1-8</td><td>2.17GB/s ± 3%</td><td>8.96GB/s ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=0-8</td><td>2.26GB/s ± 4%</td><td>10.88GB/s ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=1-8</td><td>2.31GB/s ± 2%</td><td>10.98GB/s ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=0-8</td><td>2.36GB/s ± 7%</td><td>13.73GB/s ± 1%</td><td>2.43GB/s ± 2%</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=1-8</td><td>2.33GB/s ± 6%</td><td>13.68GB/s ± 3%</td><td>2.42GB/s ± 4%</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=0-8</td><td>2.19GB/s ± 7%</td><td>15.19GB/s ± 3%</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=1-8</td><td>2.31GB/s ± 8%</td><td>15.04GB/s ± 3%</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=0-8</td><td>916MB/s ± 2%</td><td>920MB/s ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=1-8</td><td>870MB/s ± 2%</td><td>867MB/s ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=0-8</td><td>2.30GB/s ± 2%</td><td>2.28GB/s ± 4%</td><td>2.16GB/s ±11%</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=1-8</td><td>2.03GB/s ± 3%</td><td>2.06GB/s ± 2%</td><td>2.04GB/s ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=0-8</td><td>12.7GB/s ± 2%</td><td>12.8GB/s ± 4%</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=1-8</td><td>12.1GB/s ± 3%</td><td>12.2GB/s ± 1%</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=0-8</td><td>15.6GB/s ± 1%</td><td>15.5GB/s ± 1%</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=1-8</td><td>14.6GB/s ± 6%</td><td>15.0GB/s ± 2%</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=0-8</td><td>25.1GB/s ± 5%</td><td>25.7GB/s ± 3%</td><td>25.4GB/s ± 7%</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=1-8</td><td>24.1GB/s ± 6%</td><td>25.3GB/s ± 3%</td><td>24.1GB/s ± 8%</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=0-8</td><td>26.9GB/s ± 4%</td><td>26.8GB/s ± 5%</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=1-8</td><td>25.9GB/s ± 3%</td><td>26.8GB/s ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=15/align=0-8</td><td>412MB/s ±10%</td><td>421MB/s ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=15/align=1-8</td><td>427MB/s ± 5%</td><td>422MB/s ± 1%</td>
<tr><td>CRC32/poly=Koopman/size=40/align=0-8</td><td>437MB/s ± 9%</td><td>456MB/s ± 2%</td><td>428MB/s ±12%</td>
<tr><td>CRC32/poly=Koopman/size=40/align=1-8</td><td>440MB/s ± 6%</td><td>455MB/s ± 3%</td><td>461MB/s ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=512/align=0-8</td><td>453MB/s ± 5%</td><td>476MB/s ± 3%</td>
<tr><td>CRC32/poly=Koopman/size=512/align=1-8</td><td>455MB/s ± 6%</td><td>440MB/s ± 8%</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=0-8</td><td>452MB/s ± 9%</td><td>438MB/s ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=1-8</td><td>477MB/s ± 2%</td><td>434MB/s ± 5%</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=0-8</td><td>454MB/s ± 5%</td><td>455MB/s ± 6%</td><td>452MB/s ± 8%</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=1-8</td><td>459MB/s ± 9%</td><td>455MB/s ±11%</td><td>434MB/s ± 9%</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=0-8</td><td>453MB/s ± 8%</td><td>450MB/s ± 4%</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=1-8</td><td>471MB/s ± 3%</td><td>441MB/s ± 3%</td>
</table>
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%
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name</th><th>old time/op</th><th>new time/op</th><th>delta</th>
<tr><td>CRC32/poly=IEEE/size=15/align=0-8</td><td>46.9ns ± 8%</td><td>44.5ns ± 3%</td><td>-5.01%</td><td>(p=0.008 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=15/align=1-8</td><td>44.7ns ± 5%</td><td>44.5ns ± 4%</td><td>~ </td><td>(p=0.539 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=40/align=0-8</td><td>41.0ns ± 1%</td><td>42.5ns ± 6%</td><td>+3.56%</td><td>(p=0.000 n=8+10)</td>
<tr><td>CRC32/poly=IEEE/size=40/align=1-8</td><td>41.1ns ± 1%</td><td>42.0ns ± 3%</td><td>+2.34%</td><td>(p=0.000 n=9+10)</td>
<tr><td>CRC32/poly=IEEE/size=512/align=0-8</td><td>238ns ± 5%</td><td>57ns ± 3%</td><td>-76.00%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=512/align=1-8</td><td>236ns ± 3%</td><td>57ns ± 3%</td><td>-75.72%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=0-8</td><td>452ns ± 4%</td><td>94ns ± 2%</td><td>-79.20%</td><td>(p=0.000 n=10+8)</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=1-8</td><td>444ns ± 2%</td><td>93ns ± 2%</td><td>-78.97%</td><td>(p=0.000 n=10+8)</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=0-8</td><td>1.74µs ± 8%</td><td>0.30µs ± 1%</td><td>-82.87%</td><td>(p=0.000 n=10+9)</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=1-8</td><td>1.76µs ± 6%</td><td>0.30µs ± 3%</td><td>-83.05%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=0-8</td><td>15.0µs ± 7%</td><td>2.2µs ± 3%</td><td>-85.57%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=1-8</td><td>14.2µs ± 7%</td><td>2.2µs ± 3%</td><td>-84.65%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=0-8</td><td>16.4ns ± 3%</td><td>16.3ns ± 2%</td><td>~ </td><td>(p=0.615 n=9+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=1-8</td><td>17.2ns ± 2%</td><td>17.3ns ± 2%</td><td>~ </td><td>(p=0.650 n=9+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=0-8</td><td>17.4ns ± 2%</td><td>17.5ns ± 4%</td><td>~ </td><td>(p=0.694 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=1-8</td><td>19.7ns ± 3%</td><td>19.4ns ± 2%</td><td>-1.62%</td><td>(p=0.036 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=0-8</td><td>40.2ns ± 2%</td><td>40.1ns ± 4%</td><td>~ </td><td>(p=0.614 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=1-8</td><td>42.1ns ± 3%</td><td>41.9ns ± 2%</td><td>~ </td><td>(p=0.952 n=10+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=0-8</td><td>65.5ns ± 1%</td><td>66.2ns ± 1%</td><td>+1.01%</td><td>(p=0.003 n=9+8)</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=1-8</td><td>70.1ns ± 6%</td><td>68.5ns ± 2%</td><td>~ </td><td>(p=0.190 n=10+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=0-8</td><td>163ns ± 5%</td><td>159ns ± 3%</td><td>-2.46%</td><td>(p=0.032 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=1-8</td><td>169ns ± 6%</td><td>162ns ± 3%</td><td>-4.60%</td><td>(p=0.005 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=0-8</td><td>1.22µs ± 4%</td><td>1.21µs ± 3%</td><td>~ </td><td>(p=0.882 n=9+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=1-8</td><td>1.26µs ± 3%</td><td>1.22µs ± 4%</td><td>-3.48%</td><td>(p=0.002 n=9+10)</td>
<tr><td>CRC32/poly=Koopman/size=15/align=0-8</td><td>36.5ns ±11%</td><td>35.6ns ± 3%</td><td>~ </td><td>(p=0.216 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=15/align=1-8</td><td>35.1ns ± 5%</td><td>35.5ns ± 1%</td><td>~ </td><td>(p=0.508 n=10+9)</td>
<tr><td>CRC32/poly=Koopman/size=40/align=0-8</td><td>91.6ns ± 9%</td><td>87.6ns ± 2%</td><td>-4.35%</td><td>(p=0.002 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=40/align=1-8</td><td>91.1ns ± 6%</td><td>88.0ns ± 3%</td><td>~ </td><td>(p=0.055 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=512/align=0-8</td><td>1.13µs ± 5%</td><td>1.08µs ± 3%</td><td>-4.93%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=512/align=1-8</td><td>1.13µs ± 6%</td><td>1.17µs ± 8%</td><td>~ </td><td>(p=0.143 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=0-8</td><td>2.24µs ± 6%</td><td>2.34µs ± 4%</td><td>+4.34%</td><td>(p=0.010 n=9+10)</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=1-8</td><td>2.15µs ± 2%</td><td>2.36µs ± 5%</td><td>+9.84%</td><td>(p=0.000 n=9+10)</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=0-8</td><td>9.03µs ± 6%</td><td>9.00µs ± 6%</td><td>~ </td><td>(p=0.971 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=1-8</td><td>8.94µs ±10%</td><td>9.05µs ±12%</td><td>~ </td><td>(p=0.754 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=0-8</td><td>72.4µs ± 9%</td><td>72.9µs ± 4%</td><td>~ </td><td>(p=0.684 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=1-8</td><td>69.6µs ± 3%</td><td>74.3µs ± 3%</td><td>+6.70%</td><td>(p=0.000 n=8+10)</td>
</table>
<style>.benchstat tbody td:nth-child(1n+2) { text-align: right; padding: 0em 1em; }</style>
<table class='benchstat'>
<tr><th>name</th><th>old speed</th><th>new speed</th><th>delta</th>
<tr><td>CRC32/poly=IEEE/size=15/align=0-8</td><td>321MB/s ± 8%</td><td>337MB/s ± 3%</td><td>+5.06%</td><td>(p=0.009 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=15/align=1-8</td><td>336MB/s ± 4%</td><td>337MB/s ± 4%</td><td>~ </td><td>(p=0.579 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=40/align=0-8</td><td>975MB/s ± 1%</td><td>942MB/s ± 5%</td><td>-3.37%</td><td>(p=0.001 n=8+10)</td>
<tr><td>CRC32/poly=IEEE/size=40/align=1-8</td><td>974MB/s ± 1%</td><td>952MB/s ± 3%</td><td>-2.25%</td><td>(p=0.000 n=9+10)</td>
<tr><td>CRC32/poly=IEEE/size=512/align=0-8</td><td>2.15GB/s ± 4%</td><td>8.97GB/s ± 3%</td><td>+317.65%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=512/align=1-8</td><td>2.17GB/s ± 3%</td><td>8.96GB/s ± 3%</td><td>+312.89%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=0-8</td><td>2.26GB/s ± 4%</td><td>10.88GB/s ± 2%</td><td>+381.12%</td><td>(p=0.000 n=10+8)</td>
<tr><td>CRC32/poly=IEEE/size=1kB/align=1-8</td><td>2.31GB/s ± 2%</td><td>10.98GB/s ± 2%</td><td>+375.97%</td><td>(p=0.000 n=10+8)</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=0-8</td><td>2.36GB/s ± 7%</td><td>13.73GB/s ± 1%</td><td>+482.26%</td><td>(p=0.000 n=10+9)</td>
<tr><td>CRC32/poly=IEEE/size=4kB/align=1-8</td><td>2.33GB/s ± 6%</td><td>13.68GB/s ± 3%</td><td>+488.23%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=0-8</td><td>2.19GB/s ± 7%</td><td>15.19GB/s ± 3%</td><td>+591.99%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=IEEE/size=32kB/align=1-8</td><td>2.31GB/s ± 8%</td><td>15.04GB/s ± 3%</td><td>+550.07%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=0-8</td><td>916MB/s ± 2%</td><td>920MB/s ± 2%</td><td>~ </td><td>(p=0.489 n=9+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=15/align=1-8</td><td>870MB/s ± 2%</td><td>867MB/s ± 2%</td><td>~ </td><td>(p=0.661 n=9+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=0-8</td><td>2.30GB/s ± 2%</td><td>2.28GB/s ± 4%</td><td>~ </td><td>(p=0.684 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=40/align=1-8</td><td>2.03GB/s ± 3%</td><td>2.06GB/s ± 2%</td><td>~ </td><td>(p=0.063 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=0-8</td><td>12.7GB/s ± 2%</td><td>12.8GB/s ± 4%</td><td>~ </td><td>(p=0.529 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=512/align=1-8</td><td>12.1GB/s ± 3%</td><td>12.2GB/s ± 1%</td><td>~ </td><td>(p=0.780 n=10+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=0-8</td><td>15.6GB/s ± 1%</td><td>15.5GB/s ± 1%</td><td>-1.02%</td><td>(p=0.002 n=9+8)</td>
<tr><td>CRC32/poly=Castagnoli/size=1kB/align=1-8</td><td>14.6GB/s ± 6%</td><td>15.0GB/s ± 2%</td><td>~ </td><td>(p=0.211 n=10+9)</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=0-8</td><td>25.1GB/s ± 5%</td><td>25.7GB/s ± 3%</td><td>~ </td><td>(p=0.052 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=4kB/align=1-8</td><td>24.1GB/s ± 6%</td><td>25.3GB/s ± 3%</td><td>+4.71%</td><td>(p=0.005 n=10+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=0-8</td><td>26.9GB/s ± 4%</td><td>26.8GB/s ± 5%</td><td>~ </td><td>(p=0.842 n=9+10)</td>
<tr><td>CRC32/poly=Castagnoli/size=32kB/align=1-8</td><td>25.9GB/s ± 3%</td><td>26.8GB/s ± 4%</td><td>+3.62%</td><td>(p=0.002 n=9+10)</td>
<tr><td>CRC32/poly=Koopman/size=15/align=0-8</td><td>412MB/s ±10%</td><td>421MB/s ± 3%</td><td>~ </td><td>(p=0.218 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=15/align=1-8</td><td>427MB/s ± 5%</td><td>422MB/s ± 1%</td><td>~ </td><td>(p=0.497 n=10+9)</td>
<tr><td>CRC32/poly=Koopman/size=40/align=0-8</td><td>437MB/s ± 9%</td><td>456MB/s ± 2%</td><td>+4.50%</td><td>(p=0.002 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=40/align=1-8</td><td>440MB/s ± 6%</td><td>455MB/s ± 3%</td><td>~ </td><td>(p=0.052 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=512/align=0-8</td><td>453MB/s ± 5%</td><td>476MB/s ± 3%</td><td>+5.09%</td><td>(p=0.000 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=512/align=1-8</td><td>455MB/s ± 6%</td><td>440MB/s ± 8%</td><td>~ </td><td>(p=0.143 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=0-8</td><td>452MB/s ± 9%</td><td>438MB/s ± 4%</td><td>~ </td><td>(p=0.052 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=1kB/align=1-8</td><td>477MB/s ± 2%</td><td>434MB/s ± 5%</td><td>-8.92%</td><td>(p=0.000 n=9+10)</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=0-8</td><td>454MB/s ± 5%</td><td>455MB/s ± 6%</td><td>~ </td><td>(p=0.971 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=4kB/align=1-8</td><td>459MB/s ± 9%</td><td>455MB/s ±11%</td><td>~ </td><td>(p=0.739 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=0-8</td><td>453MB/s ± 8%</td><td>450MB/s ± 4%</td><td>~ </td><td>(p=0.684 n=10+10)</td>
<tr><td>CRC32/poly=Koopman/size=32kB/align=1-8</td><td>471MB/s ± 3%</td><td>441MB/s ± 3%</td><td>-6.25%</td><td>(p=0.000 n=8+10)</td>
</table>
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)
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment