Back to Lo

Benchmark

exp/simd/BENCHMARK.md

1.53.041.0 KB
Original Source

Benchmark

Summary

Benchmarks show that running SIMD operations on small datasets is slower:

txt
BenchmarkSumInt8/small/Fallback-lo-2            	248740710	        5.218 ns/op
BenchmarkSumInt8/small/AVX-x16-2                	126181464	        9.485 ns/op
BenchmarkSumInt8/small/AVX2-x32-2               	 73059427	        14.44 ns/op
BenchmarkSumInt8/small/AVX512-x64-2             	 49913169	        24.41 ns/op

But SIMD is much faster on large datasets:

txt
BenchmarkSumInt8/xlarge/Fallback-lo-2           	  273898	         4383 ns/op
BenchmarkSumInt8/xlarge/AVX-x16-2               	 6928408	        173.1 ns/op
BenchmarkSumInt8/xlarge/AVX2-x32-2              	12639586	        94.09 ns/op
BenchmarkSumInt8/xlarge/AVX512-x64-2            	13509693	        89.67 ns/op

Run

bash
export GOEXPERIMENT=simd
cd exp/simd/
go test -bench ./... -run=^Benchmark -benchmem -bench
bash
# get instruction set
cat /proc/cpuinfo

Result

archsimd.X86: AVX=true AVX2=true AVX512=true
goos: linux
goarch: amd64
pkg: github.com/samber/lo/exp/simd
cpu: AMD EPYC 9454P 48-Core Processor    

...

PASS
ok  	github.com/samber/lo/exp/simd	596.213s
BenchmarkIterationsTime/opBytes/opAllocs/op
BenchmarkContainsInt8/tiny/AVX512-x16-23123592043.625 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/tiny/AVX512-x32-22771944414.531 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/tiny/AVX512-x64-23368532093.401 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/small/AVX512-x16-24491321032.670 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/small/AVX512-x32-21486483398.332 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/small/AVX512-x64-21431248617.982 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/medium/AVX512-x16-22768167144.302 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/medium/AVX512-x32-23457749573.529 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/medium/AVX512-x64-24498687222.669 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/large/AVX512-x16-210000000010.68 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/large/AVX512-x32-21729342006.941 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/large/AVX512-x64-22809926254.384 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/xlarge/AVX512-x16-21871895996.203 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/xlarge/AVX512-x32-22742895634.042 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/xlarge/AVX512-x64-23750485552.953 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/massive/AVX512-x16-28643494814.02 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/massive/AVX512-x32-21537423468.012 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8/massive/AVX512-x64-22594044835.214 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/tiny/AVX512-x8-22703094704.315 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/tiny/AVX512-x16-22648746464.281 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/tiny/AVX512-x32-23288104793.593 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/small/AVX512-x8-23747425613.206 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/small/AVX512-x16-24498388702.678 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/small/AVX512-x32-21438457348.484 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/medium/AVX512-x8-21854155906.448 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/medium/AVX512-x16-22737808684.268 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/medium/AVX512-x32-23500674843.431 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/large/AVX512-x8-26110977819.66 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/large/AVX512-x16-210000000010.74 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/large/AVX512-x32-21828866466.575 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/xlarge/AVX512-x8-21522068271.53 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/xlarge/AVX512-x16-23187657237.57 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/xlarge/AVX512-x32-26199221719.55 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/massive/AVX512-x8-24372000262.8 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/massive/AVX512-x16-29019658131.1 ns/op0 B/op0 allocs/op
BenchmarkContainsInt16/massive/AVX512-x32-21656843074.25 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/tiny/AVX512-x4-24992094422.406 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/tiny/AVX512-x8-23504796093.433 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/tiny/AVX512-x16-22809185544.309 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/small/AVX512-x4-22995615964.028 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/small/AVX512-x8-23740643103.205 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/small/AVX512-x16-24992197652.418 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/medium/AVX512-x4-210000000010.42 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/medium/AVX512-x8-21873916356.403 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/medium/AVX512-x16-23079558003.875 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/large/AVX512-x4-23325642036.05 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/large/AVX512-x8-26242152619.23 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/large/AVX512-x16-210000000010.36 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/xlarge/AVX512-x4-28328856144.9 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/xlarge/AVX512-x8-21703903771.14 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/xlarge/AVX512-x16-22874024141.77 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/massive/AVX512-x4-23525885332.3 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/massive/AVX512-x8-27318027164.5 ns/op0 B/op0 allocs/op
BenchmarkContainsInt32/massive/AVX512-x16-21218136699.08 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/tiny/AVX512-x2-24090143082.934 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/tiny/AVX512-x4-24492107912.667 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/tiny/AVX512-x8-22809981464.293 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/small/AVX512-x2-21956314296.172 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/small/AVX512-x4-22812723944.308 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/small/AVX512-x8-24089339243.044 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/medium/AVX512-x2-26300690918.94 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/medium/AVX512-x4-210000000010.67 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/medium/AVX512-x8-21974111266.016 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/large/AVX512-x2-21709857870.57 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/large/AVX512-x4-23255801337.07 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/large/AVX512-x8-25762948520.94 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/xlarge/AVX512-x2-24286155281.8 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/xlarge/AVX512-x4-28344772143.8 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/xlarge/AVX512-x8-21442827683.14 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/massive/AVX512-x2-210000001012 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/massive/AVX512-x4-22350525510.6 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64/massive/AVX512-x8-23773523318.1 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/tiny/AVX512-x16-23388803153.332 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/tiny/AVX512-x32-23207842173.559 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/tiny/AVX512-x64-23415998543.331 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/small/AVX512-x16-24495794242.670 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/small/AVX512-x32-21403681428.648 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/small/AVX512-x64-21468288888.182 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/medium/AVX512-x16-23744439743.472 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/medium/AVX512-x32-24492716072.672 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/medium/AVX512-x64-25985257312.018 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/large/AVX512-x16-22548285654.956 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/large/AVX512-x32-24077774842.938 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/large/AVX512-x64-24434723162.666 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/xlarge/AVX512-x16-21621968277.867 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/xlarge/AVX512-x32-22683249504.518 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/xlarge/AVX512-x64-24004377892.952 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/massive/AVX512-x16-22145488725.640 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/massive/AVX512-x32-23484315533.391 ns/op0 B/op0 allocs/op
BenchmarkContainsUint8/massive/AVX512-x64-24597819082.455 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/tiny/AVX512-x8-22762719124.297 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/tiny/AVX512-x16-22811455284.270 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/tiny/AVX512-x32-23153439113.667 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/small/AVX512-x8-23746323513.204 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/small/AVX512-x16-24493557272.670 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/small/AVX512-x32-21380881468.395 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/medium/AVX512-x8-21872761916.582 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/medium/AVX512-x16-22811079804.306 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/medium/AVX512-x32-23588503283.516 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/large/AVX512-x8-25902593119.98 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/large/AVX512-x16-210000000010.68 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/large/AVX512-x32-21796313546.569 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/xlarge/AVX512-x8-21657626771.63 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/xlarge/AVX512-x16-23257898136.96 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/xlarge/AVX512-x32-26146487019.44 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/massive/AVX512-x8-22153736557.4 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/massive/AVX512-x16-24225728281.3 ns/op0 B/op0 allocs/op
BenchmarkContainsUint16/massive/AVX512-x32-27829936145.1 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/tiny/AVX512-x4-24993902962.403 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/tiny/AVX512-x8-23629640803.342 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/tiny/AVX512-x16-22810633644.268 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/small/AVX512-x4-22938675544.004 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/small/AVX512-x8-23745104343.203 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/small/AVX512-x16-24997142062.402 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/medium/AVX512-x4-210000000010.42 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/medium/AVX512-x8-21872586576.405 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/medium/AVX512-x16-23129992103.881 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/large/AVX512-x4-23329836636.02 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/large/AVX512-x8-26240942119.23 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/large/AVX512-x16-210000000010.10 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/xlarge/AVX512-x4-27948898143.6 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/xlarge/AVX512-x8-21702173870.49 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/xlarge/AVX512-x16-22874232041.77 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/massive/AVX512-x4-21595774751.1 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/massive/AVX512-x8-23094242381.1 ns/op0 B/op0 allocs/op
BenchmarkContainsUint32/massive/AVX512-x16-25080051238.3 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/tiny/AVX512-x2-23747603513.203 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/tiny/AVX512-x4-24987630542.419 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/tiny/AVX512-x8-23196352743.582 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/small/AVX512-x2-21870324526.447 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/small/AVX512-x4-22995462444.009 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/small/AVX512-x8-23739376593.207 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/medium/AVX512-x2-26241311819.23 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/medium/AVX512-x4-211397879110.42 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/medium/AVX512-x8-21869653306.484 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/large/AVX512-x2-21700576870.57 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/large/AVX512-x4-23328649536.69 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/large/AVX512-x8-26148606519.93 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/xlarge/AVX512-x2-24154370280.8 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/xlarge/AVX512-x4-28371358148.2 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/xlarge/AVX512-x8-21419379572.36 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/massive/AVX512-x2-21773937676.4 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/massive/AVX512-x4-23500168343.0 ns/op0 B/op0 allocs/op
BenchmarkContainsUint64/massive/AVX512-x8-27097266249.3 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/tiny/AVX512-x4-24105221602.675 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/tiny/AVX512-x8-23085658823.814 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/tiny/AVX512-x16-23153318973.755 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/small/AVX512-x4-22782194344.642 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/small/AVX512-x8-23629454813.287 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/small/AVX512-x16-24085231532.941 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/medium/AVX512-x4-210000000010.77 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/medium/AVX512-x8-21861863766.409 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/medium/AVX512-x16-22642551084.619 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/large/AVX512-x4-23302870136.27 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/large/AVX512-x8-26246536019.53 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/large/AVX512-x16-210821331010.95 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/xlarge/AVX512-x4-28359381143.6 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/xlarge/AVX512-x8-21704270170.46 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/xlarge/AVX512-x16-23180692137.13 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/massive/AVX512-x4-210000001100 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/massive/AVX512-x8-22164672554.4 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat32/massive/AVX512-x16-24201453293.9 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/tiny/AVX512-x2-23621839253.223 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/tiny/AVX512-x4-24490214662.687 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/tiny/AVX512-x8-23201761493.820 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/small/AVX512-x2-21871391166.415 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/small/AVX512-x4-22807225854.300 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/small/AVX512-x8-23356705023.472 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/medium/AVX512-x2-26234392719.23 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/medium/AVX512-x4-211233290210.69 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/medium/AVX512-x8-21796107806.741 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/large/AVX512-x2-21699695970.51 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/large/AVX512-x4-23301795036.29 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/large/AVX512-x8-26032232819.73 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/xlarge/AVX512-x2-24141281282.9 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/xlarge/AVX512-x4-27856590145.0 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/xlarge/AVX512-x8-21662373972.06 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/massive/AVX512-x2-25412022195 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/massive/AVX512-x4-210000001158 ns/op0 B/op0 allocs/op
BenchmarkContainsFloat64/massive/AVX512-x8-22115301560.4 ns/op0 B/op0 allocs/op
BenchmarkContainsWorstCase/AVX512-x4-27651734145.6 ns/op0 B/op0 allocs/op
BenchmarkContainsWorstCase/AVX512-x8-21492159970.49 ns/op0 B/op0 allocs/op
BenchmarkContainsWorstCase/AVX512-x16-22870847841.38 ns/op0 B/op0 allocs/op
BenchmarkContainsBestCase/AVX512-x4-25342375782.136 ns/op0 B/op0 allocs/op
BenchmarkContainsBestCase/AVX512-x8-25612526452.159 ns/op0 B/op0 allocs/op
BenchmarkContainsBestCase/AVX512-x16-25603964542.137 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/tiny/AVX512-x4-24996491392.401 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/tiny/AVX512-x8-23297432403.421 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/tiny/AVX512-x16-22805163924.276 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/small/AVX512-x4-22993731714.006 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/small/AVX512-x8-23744079883.267 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/small/AVX512-x16-24869483462.424 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/medium/AVX512-x4-210000000010.41 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/medium/AVX512-x8-21828996216.412 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/medium/AVX512-x16-23119697763.829 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/large/AVX512-x4-23330981636.04 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/large/AVX512-x8-25991267619.74 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/large/AVX512-x16-210000000010.65 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/xlarge/AVX512-x4-28346818143.7 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/xlarge/AVX512-x8-21698039970.54 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/xlarge/AVX512-x16-22867645542.94 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/massive/AVX512-x4-210000001151 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/massive/AVX512-x8-22161594555.2 ns/op0 B/op0 allocs/op
BenchmarkContainsNegative/massive/AVX512-x16-23549094350.5 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8ByWidth/AVX512-x16-23315331413.222 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8ByWidth/AVX512-x32-24087416813.193 ns/op0 B/op0 allocs/op
BenchmarkContainsInt8ByWidth/AVX512-x64-23653828733.241 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64SteadyState/AVX512-x2-25722603211.5 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64SteadyState/AVX512-x4-211711869103.1 ns/op0 B/op0 allocs/op
BenchmarkContainsInt64SteadyState/AVX512-x8-21967103361.36 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/small/Fallback-lo-22487407105.218 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/small/AVX-x16-21261814649.485 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/small/AVX2-x32-27305942714.44 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/small/AVX512-x64-24991316924.41 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/medium/Fallback-lo-21727807569.96 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/medium/AVX-x16-210000000010.58 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/medium/AVX2-x32-29162099913.10 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/medium/AVX512-x64-25408213022.20 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/large/Fallback-lo-22006178576.3 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/large/AVX-x16-24183669027.82 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/large/AVX2-x32-25173539923.04 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/large/AVX512-x64-24086158629.40 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/xlarge/Fallback-lo-22738984383 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/xlarge/AVX-x16-26928408173.1 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/xlarge/AVX2-x32-21263958694.09 ns/op0 B/op0 allocs/op
BenchmarkSumInt8/xlarge/AVX512-x64-21350969389.67 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/small/Fallback-lo-22494441035.012 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/small/AVX-x8-22449272305.052 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/small/AVX2-x16-21220885179.715 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/small/AVX512-x32-25409837022.00 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/medium/Fallback-lo-21578268372.54 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/medium/AVX-x8-210000000010.51 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/medium/AVX2-x16-210000000010.75 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/medium/AVX512-x32-25614745521.38 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/large/Fallback-lo-22173214598.1 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/large/AVX-x8-22631948144.73 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/large/AVX2-x16-24045951927.91 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/large/AVX512-x32-23935975231.28 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/xlarge/Fallback-lo-22739324382 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/xlarge/AVX-x8-23557265331.2 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/xlarge/AVX2-x16-26930166173.4 ns/op0 B/op0 allocs/op
BenchmarkSumInt16/xlarge/AVX512-x32-21210024497.01 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/small/Fallback-lo-22495665394.808 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/small/AVX-x4-22592500194.581 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/small/AVX2-x8-22328589335.404 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/small/AVX512-x16-210000000011.18 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/medium/Fallback-lo-21727444172.28 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/medium/AVX-x4-25840025820.56 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/medium/AVX2-x8-211085175610.67 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/medium/AVX512-x16-210659360311.25 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/large/Fallback-lo-22171817551.8 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/large/AVX-x4-28270253146.0 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/large/AVX2-x8-22223451846.06 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/large/AVX512-x16-23744876332.31 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/xlarge/Fallback-lo-22736994559 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/xlarge/AVX-x4-210000001102 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/xlarge/AVX2-x8-23586887332.4 ns/op0 B/op0 allocs/op
BenchmarkSumInt32/xlarge/AVX512-x16-27214437170.5 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/small/Fallback-lo-24174731242.886 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/small/AVX-x2-22875217564.169 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/small/AVX2-x4-22777835134.311 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/small/AVX512-x8-21728231036.993 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/medium/Fallback-lo-23402265335.27 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/medium/AVX-x2-24924124824.05 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/medium/AVX2-x4-27889734214.58 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/medium/AVX512-x8-28436129714.03 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/large/Fallback-lo-23680988282.3 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/large/AVX-x2-26293607170.7 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/large/AVX2-x4-21273984991.28 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/large/AVX512-x8-22550813046.30 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/xlarge/Fallback-lo-25463212283 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/xlarge/AVX-x2-28774341289 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/xlarge/AVX2-x4-21845892650.4 ns/op0 B/op0 allocs/op
BenchmarkSumInt64/xlarge/AVX512-x8-22148355550.8 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/small/Fallback-lo-24111007702.951 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/small/AVX-x4-22640135964.572 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/small/AVX2-x8-21744782666.911 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/small/AVX512-x16-26118267319.78 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/medium/Fallback-lo-23381507035.68 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/medium/AVX-x4-25823818820.66 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/medium/AVX2-x8-29131654413.26 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/medium/AVX512-x16-28004662415.08 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/large/Fallback-lo-24304168278.7 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/large/AVX-x4-26198957184.8 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/large/AVX2-x8-21226016986.60 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/large/AVX512-x16-22214711245.34 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/xlarge/Fallback-lo-25469012193 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/xlarge/AVX-x4-27365031622 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/xlarge/AVX2-x8-21493887810.5 ns/op0 B/op0 allocs/op
BenchmarkSumFloat32/xlarge/AVX512-x16-22959298393.4 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/small/Fallback-lo-24107780703.043 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/small/AVX-x2-22541560084.714 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/small/AVX2-x4-22276044345.323 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/small/AVX512-x8-21700997487.115 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/medium/Fallback-lo-23364634535.78 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/medium/AVX-x2-23293115234.92 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/medium/AVX2-x4-27538944616.79 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/medium/AVX512-x8-28982618113.33 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/large/Fallback-lo-24293837302.8 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/large/AVX-x2-23146601381.4 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/large/AVX2-x4-26373876184.3 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/large/AVX512-x8-21346471288.96 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/xlarge/Fallback-lo-25457642193 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/xlarge/AVX-x2-23688463390 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/xlarge/AVX2-x4-27099401613 ns/op0 B/op0 allocs/op
BenchmarkSumFloat64/xlarge/AVX512-x8-21480214808.6 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/small/Fallback-lo-24115291473.043 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/small/AVX-x4-22044284015.872 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/small/AVX2-x8-21875739286.214 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/small/AVX512-x16-29834670012.12 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/medium/Fallback-lo-23348144235.72 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/medium/AVX-x4-25204239422.12 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/medium/AVX2-x8-29628854113.44 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/medium/AVX512-x16-210099578011.90 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/large/Fallback-lo-24296570289.9 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/large/AVX-x4-27743022146.4 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/large/AVX2-x8-22435598846.26 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/large/AVX512-x16-23732265532.89 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/xlarge/Fallback-lo-25470082193 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/xlarge/AVX-x4-210872461112 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/xlarge/AVX2-x8-21386868761.9 ns/op0 B/op0 allocs/op
BenchmarkMeanInt32/xlarge/AVX512-x16-27166142170.7 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/small/Fallback-lo-23497600053.449 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/small/AVX-x2-21896745386.293 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/small/AVX2-x4-21592286007.531 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/small/AVX512-x8-211019643310.89 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/medium/Fallback-lo-23296861836.17 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/medium/AVX-x2-23086381737.69 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/medium/AVX2-x4-26242877219.66 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/medium/AVX512-x8-27714098415.54 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/large/Fallback-lo-24281057280.6 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/large/AVX-x2-23057349389.4 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/large/AVX2-x4-26509438185.9 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/large/AVX512-x8-21266803293.50 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/xlarge/Fallback-lo-25458982288 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/xlarge/AVX-x2-23676714048 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/xlarge/AVX2-x4-27399411621 ns/op0 B/op0 allocs/op
BenchmarkMeanFloat64/xlarge/AVX512-x8-21434867811.3 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/small/AVX-x4-23123382683.860 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/small/AVX2-x8-22380348725.042 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/small/AVX512-x16-21526009436.661 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/medium/AVX-x4-26105126619.73 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/medium/AVX2-x8-29179214413.11 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/medium/AVX512-x16-29999454012.18 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/large/AVX-x4-28604774140.5 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/large/AVX2-x8-21558103777.56 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/large/AVX512-x16-23051242140.24 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/xlarge/AVX-x4-210000001110 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/xlarge/AVX2-x8-22158272557.2 ns/op0 B/op0 allocs/op
BenchmarkMinInt32/xlarge/AVX512-x16-24253668282.6 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/small/AVX-x2-22641294104.544 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/small/AVX2-x4-22995876094.008 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/small/AVX512-x8-210000000010.05 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/medium/AVX-x2-23277851436.93 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/medium/AVX2-x4-25335634720.30 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/medium/AVX512-x8-27483297616.21 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/large/AVX-x2-23863326300.0 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/large/AVX2-x4-27670576146.5 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/large/AVX512-x8-21401798478.21 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/xlarge/AVX-x2-24927392195 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/xlarge/AVX2-x4-210000001103 ns/op0 B/op0 allocs/op
BenchmarkMinFloat64/xlarge/AVX512-x8-22145290560.3 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/small/AVX-x4-23065857053.860 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/small/AVX2-x8-22373479975.086 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/small/AVX512-x16-22014339666.130 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/medium/AVX-x4-26075963119.92 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/medium/AVX2-x8-29093466213.13 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/medium/AVX512-x16-29851794412.18 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/large/AVX-x4-28590542139.6 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/large/AVX2-x8-21577037277.69 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/large/AVX512-x16-23019732439.32 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/xlarge/AVX-x4-210000001104 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/xlarge/AVX2-x8-22152038562.1 ns/op0 B/op0 allocs/op
BenchmarkMaxInt32/xlarge/AVX512-x16-23917990296.7 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/small/AVX-x2-22496171624.816 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/small/AVX2-x4-22070175145.855 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/small/AVX512-x8-26652029017.74 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/medium/AVX-x2-23230749236.92 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/medium/AVX2-x4-25730683820.77 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/medium/AVX512-x8-25691194621.12 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/large/AVX-x2-24259366287.1 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/large/AVX2-x4-27905420148.9 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/large/AVX512-x8-21410068683.43 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/xlarge/AVX-x2-25453782243 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/xlarge/AVX2-x4-210000001113 ns/op0 B/op0 allocs/op
BenchmarkMaxFloat64/xlarge/AVX512-x8-22119741565.7 ns/op0 B/op0 allocs/op
BenchmarkSumInt8ByWidth/Fallback-lo-28967751335 ns/op0 B/op0 allocs/op
BenchmarkSumInt8ByWidth/AVX-x16-21255770094.52 ns/op0 B/op0 allocs/op
BenchmarkSumInt8ByWidth/AVX2-x32-21870253755.03 ns/op0 B/op0 allocs/op
BenchmarkSumInt8ByWidth/AVX512-x64-22134257256.10 ns/op0 B/op0 allocs/op
BenchmarkSumInt64SteadyState/Fallback-lo-25137382195 ns/op0 B/op0 allocs/op
BenchmarkSumInt64SteadyState/AVX-x2-29283761296 ns/op0 B/op0 allocs/op
BenchmarkSumInt64SteadyState/AVX2-x4-21836968888.1 ns/op0 B/op0 allocs/op
BenchmarkSumInt64SteadyState/AVX512-x8-22141715551.3 ns/op0 B/op0 allocs/op