基准函数可以调用Log、Error和Fatal,但如果使用Benchmark函数运行基准,所有消息都会被丢弃。https://play.golang.org/p/fd5Ed-il70V也许应该将消息打印到标准错误输出?
iovurdzv1#
Hi,我确认输出被丢弃了,这里是在基准测试上下文中使用的写入器go/src/testing/benchmark.go第772行 fbc6a97| | w: discard{}, |来自Log、Error或Fatal的调用将不打印任何内容,因为discard写入器的Write调用什么也不做。go/src/testing/benchmark.go第783行到第785行 fbc6a97| | typediscardstruct{} || | || | func (discard) Write(b []byte) (nint, errerror) { returnlen(b), nil } |
discard
plupiseo2#
我今天偶然发现了这个,有什么更新吗?这看起来是一个相当有说服力的例子,我希望它能做以下其中一件事:
testing.Benchmark
io.Writer
testing.B
Benchmark
j0pj023g3#
如果团队中的任何人同意创建一个新的函数,该函数接受一个io.Writer并在这里使用它,可以参考以下代码:
// go/src/testing/benchmark.go func (b *B) Discard(w io.Writer) { // 省略具体实现 }
添加和测试应该相当简单。
3条答案
按热度按时间iovurdzv1#
Hi,我确认输出被丢弃了,这里是在基准测试上下文中使用的写入器
go/src/testing/benchmark.go
第772行 fbc6a97
| | w: discard{}, |
来自Log、Error或Fatal的调用将不打印任何内容,因为
discard
写入器的Write调用什么也不做。go/src/testing/benchmark.go
第783行到第785行 fbc6a97
| | typediscardstruct{} |
| | |
| | func (discard) Write(b []byte) (nint, errerror) { returnlen(b), nil } |
plupiseo2#
我今天偶然发现了这个,有什么更新吗?这看起来是一个相当有说服力的例子,我希望它能做以下其中一件事:
testing.Benchmark
接受io.Writer
作为输入。testing.B
并在其上调用Benchmark
。j0pj023g3#
如果团队中的任何人同意创建一个新的函数,该函数接受一个io.Writer并在这里使用它,可以参考以下代码:
添加和测试应该相当简单。