}
}
+// Exported (global) variable serving as input for some
+// of the benchmarks to ensure side-effect free calls
+// are not optimized away.
+var Input uint64 = deBruijn64
+
+// Exported (global) variable to store function results
+// during benchmarking to ensure side-effect free calls
+// are not optimized away.
+var Output int
+
+func BenchmarkLeadingZeros(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += LeadingZeros(uint(Input) >> (uint(i) % UintSize))
+ }
+ Output = s
+}
+
+func BenchmarkLeadingZeros8(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += LeadingZeros8(uint8(Input) >> (uint(i) % 8))
+ }
+ Output = s
+}
+
+func BenchmarkLeadingZeros16(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += LeadingZeros16(uint16(Input) >> (uint(i) % 16))
+ }
+ Output = s
+}
+
+func BenchmarkLeadingZeros32(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += LeadingZeros32(uint32(Input) >> (uint(i) % 32))
+ }
+ Output = s
+}
+
+func BenchmarkLeadingZeros64(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += LeadingZeros64(uint64(Input) >> (uint(i) % 64))
+ }
+ Output = s
+}
+
func TestTrailingZeros(t *testing.T) {
for i := 0; i < 256; i++ {
ntz := tab[i].ntz
}
}
+func BenchmarkTrailingZeros(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += TrailingZeros(uint(Input) << (uint(i) % UintSize))
+ }
+ Output = s
+}
+
+func BenchmarkTrailingZeros8(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += TrailingZeros8(uint8(Input) << (uint(i) % 8))
+ }
+ Output = s
+}
+
+func BenchmarkTrailingZeros16(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += TrailingZeros16(uint16(Input) << (uint(i) % 16))
+ }
+ Output = s
+}
+
+func BenchmarkTrailingZeros32(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += TrailingZeros32(uint32(Input) << (uint(i) % 32))
+ }
+ Output = s
+}
+
+func BenchmarkTrailingZeros64(b *testing.B) {
+ var s int
+ for i := 0; i < b.N; i++ {
+ s += TrailingZeros64(uint64(Input) << (uint(i) % 64))
+ }
+ Output = s
+}
+
func TestOnesCount(t *testing.T) {
for i := 0; i < 256; i++ {
want := tab[i].pop
}
}
-// Exported (global) variable to store function results
-// during benchmarking to ensure side-effect free calls
-// are not optimized away.
-var Unused int
-
-// Exported (global) variable serving as input for some
-// of the benchmarks to ensure side-effect free calls
-// are not optimized away.
-var Input uint64 = deBruijn64
-
func BenchmarkOnesCount(b *testing.B) {
var s int
for i := 0; i < b.N; i++ {
s += OnesCount(uint(Input))
}
- Unused = s
+ Output = s
}
func BenchmarkOnesCount8(b *testing.B) {
for i := 0; i < b.N; i++ {
s += OnesCount8(uint8(Input))
}
- Unused = s
+ Output = s
}
func BenchmarkOnesCount16(b *testing.B) {
for i := 0; i < b.N; i++ {
s += OnesCount16(uint16(Input))
}
- Unused = s
+ Output = s
}
func BenchmarkOnesCount32(b *testing.B) {
for i := 0; i < b.N; i++ {
s += OnesCount32(uint32(Input))
}
- Unused = s
+ Output = s
}
func BenchmarkOnesCount64(b *testing.B) {
for i := 0; i < b.N; i++ {
s += OnesCount64(uint64(Input))
}
- Unused = s
+ Output = s
}
func TestRotateLeft(t *testing.T) {
for i := 0; i < b.N; i++ {
s += RotateLeft(uint(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateLeft8(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateLeft8(uint8(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateLeft16(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateLeft16(uint16(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateLeft32(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateLeft32(uint32(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateLeft64(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateLeft64(uint64(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func TestRotateRight(t *testing.T) {
for i := 0; i < b.N; i++ {
s += RotateRight(uint(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateRight8(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateRight8(uint8(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateRight16(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateRight16(uint16(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateRight32(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateRight32(uint32(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkRotateRight64(b *testing.B) {
for i := 0; i < b.N; i++ {
s += RotateRight64(uint64(Input), i)
}
- Unused = int(s)
+ Output = int(s)
}
func TestReverse(t *testing.T) {
for i := 0; i < b.N; i++ {
s += Reverse(uint(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverse8(b *testing.B) {
for i := 0; i < b.N; i++ {
s += Reverse8(uint8(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverse16(b *testing.B) {
for i := 0; i < b.N; i++ {
s += Reverse16(uint16(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverse32(b *testing.B) {
for i := 0; i < b.N; i++ {
s += Reverse32(uint32(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverse64(b *testing.B) {
for i := 0; i < b.N; i++ {
s += Reverse64(uint64(i))
}
- Unused = int(s)
+ Output = int(s)
}
func TestReverseBytes(t *testing.T) {
for i := 0; i < b.N; i++ {
s += ReverseBytes(uint(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverseBytes16(b *testing.B) {
for i := 0; i < b.N; i++ {
s += ReverseBytes16(uint16(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverseBytes32(b *testing.B) {
for i := 0; i < b.N; i++ {
s += ReverseBytes32(uint32(i))
}
- Unused = int(s)
+ Output = int(s)
}
func BenchmarkReverseBytes64(b *testing.B) {
for i := 0; i < b.N; i++ {
s += ReverseBytes64(uint64(i))
}
- Unused = int(s)
+ Output = int(s)
}
func TestLen(t *testing.T) {