Improve syserror_test.
- It's very difficult to prevent returnErrnoAsError and returnError from being optimized out. Instead, replace BenchmarkReturn* with BenchmarkAssign*, which store to globalError. - Compare to a non-nil globalError in BenchmarkCompare* and BenchmarkSwitch*. New results: BenchmarkAssignErrno BenchmarkAssignErrno-12 1000000000 0.615 ns/op BenchmarkAssignError BenchmarkAssignError-12 1000000000 0.626 ns/op BenchmarkCompareErrno BenchmarkCompareErrno-12 1000000000 0.522 ns/op BenchmarkCompareError BenchmarkCompareError-12 1000000000 3.54 ns/op BenchmarkSwitchErrno BenchmarkSwitchErrno-12 1000000000 1.45 ns/op BenchmarkSwitchError BenchmarkSwitchError-12 536315757 10.9 ns/op PiperOrigin-RevId: 331875387
This commit is contained in:
parent
456c6c33e1
commit
8b15effd9e
|
@ -24,27 +24,20 @@ import (
|
||||||
|
|
||||||
var globalError error
|
var globalError error
|
||||||
|
|
||||||
func returnErrnoAsError() error {
|
func BenchmarkAssignErrno(b *testing.B) {
|
||||||
return syscall.EINVAL
|
|
||||||
}
|
|
||||||
|
|
||||||
func returnError() error {
|
|
||||||
return syserror.EINVAL
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkReturnErrnoAsError(b *testing.B) {
|
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
returnErrnoAsError()
|
globalError = syscall.EINVAL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkReturnError(b *testing.B) {
|
func BenchmarkAssignError(b *testing.B) {
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
returnError()
|
globalError = syserror.EINVAL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkCompareErrno(b *testing.B) {
|
func BenchmarkCompareErrno(b *testing.B) {
|
||||||
|
globalError = syscall.EAGAIN
|
||||||
j := 0
|
j := 0
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
if globalError == syscall.EINVAL {
|
if globalError == syscall.EINVAL {
|
||||||
|
@ -54,6 +47,7 @@ func BenchmarkCompareErrno(b *testing.B) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkCompareError(b *testing.B) {
|
func BenchmarkCompareError(b *testing.B) {
|
||||||
|
globalError = syserror.EAGAIN
|
||||||
j := 0
|
j := 0
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
if globalError == syserror.EINVAL {
|
if globalError == syserror.EINVAL {
|
||||||
|
@ -63,6 +57,7 @@ func BenchmarkCompareError(b *testing.B) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkSwitchErrno(b *testing.B) {
|
func BenchmarkSwitchErrno(b *testing.B) {
|
||||||
|
globalError = syscall.EPERM
|
||||||
j := 0
|
j := 0
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
switch globalError {
|
switch globalError {
|
||||||
|
@ -77,6 +72,7 @@ func BenchmarkSwitchErrno(b *testing.B) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkSwitchError(b *testing.B) {
|
func BenchmarkSwitchError(b *testing.B) {
|
||||||
|
globalError = syserror.EPERM
|
||||||
j := 0
|
j := 0
|
||||||
for i := b.N; i > 0; i-- {
|
for i := b.N; i > 0; i-- {
|
||||||
switch globalError {
|
switch globalError {
|
||||||
|
|
Loading…
Reference in New Issue