Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 从主/围棋场开始进行基准跑步_Go - Fatal编程技术网

Go 从主/围棋场开始进行基准跑步

Go 从主/围棋场开始进行基准跑步,go,Go,我正在尝试创建一套基准测试 包干管 import ( "fmt" "testing" ) func runall(a, b string) (bool, error) { return true, nil } func main() { bench := []testing.InternalBenchmark{ { F: Benchmark_Dev, }, } tests := []t

我正在尝试创建一套基准测试

包干管

import (
    "fmt"
    "testing"
)

func runall(a, b string) (bool, error) {
    return true, nil
}

func main() {
    bench := []testing.InternalBenchmark{
        {
            F: Benchmark_Dev,
        },
    }

    tests := []testing.InternalTest{
        {
            F: Test_Dev,
        },
    }
    testing.Main(runall, tests, bench, nil)
}

func Test_Dev(t *testing.T) {
    fmt.Println("Test_Dev")
}

func Benchmark_Dev(b *testing.B) {
    fmt.Println("Benchmark_Dev")
    b.ReportAllocs()
    for i := 0; i < b.N; i++ {
        res := i % 10
        fmt.Println(res)
    }
}
导入(
“fmt”
“测试”
)
func runall(a,b字符串)(布尔值,错误){
返回真,无
}
func main(){
工作台:=[]测试。内部基准{
{
F:基准(u Dev),
},
}
测试:=[]测试。内部测试{
{
F:测试开发,
},
}
测试。主要(运行、测试、台架、无)
}
func Test_Dev(t*testing.t){
fmt.Println(“测试开发”)
}
func Benchmark_Dev(b*testing.b){
fmt.Println(“基准开发”)
b、 ReportAllocs()
对于i:=0;i
我看到测试运行良好,但基准从未运行过。

如果您阅读:

如果程序包含测试或示例,但没有主功能,则服务将运行测试。基准测试可能不受支持,因为程序运行在资源有限的沙盒环境中


您会发现您的答案“从不运行”不是一个有用的问题描述。你到底做了什么,发生了什么?忘记-测试台?我也不尝试作为测试运行。在套件中,既有测试又有基准测试为什么只运行测试?@Kamath用于不使用“go test”的基准测试这是完全错误的。请阅读
go doc testing.Main
所说的内容。只需通过
go test-run X-bench.*
@Kamath Main和StartMain都是导出的,因为它们在std lib中被多个包使用,但是,正如它们的文档所示,它们不打算被其他包导入并按您希望的方式使用。不要使用它们!好的,操场上同意了,我怎么能从main运行基准测试?嗯。我不明白:为什么你不想用通常的方式:
去测试-测试台=。
?如果基准测试结果超过阈值,你怎么会不通过测试?我想这是另一个问题。AFAIK没有用于测试迭代持续时间的标志。我们有
go测试台-benchtime N
,但它保证基准测试至少运行N秒。如果持续时间较长,则不会将测试标记为
失败
ed。因此,如果您需要此类测试,您可以自由地实现它们。也许你会找到你的解决方案