Различная продолжительность выполнения с помощью `go run` и` go build`

пример:

RewriteRule ^page/([0-9]+)? index.php?page=$1 [L]
-1
задан John 18 January 2019 в 18:12
поделиться

1 ответ

В Go мы не поддерживаем бессмысленные микробенчмарки. Если вы собираетесь запустить тест, используйте пакет Go testing.

Например,

Вывод:

$ go test sum_test.go -bench=. -benchmem
goos: linux
goarch: amd64
BenchmarkSum-8    500000    2905 ns/op    4288 B/op    3 allocs/op
$

sum_test.go:

package main

import (
    "testing"
)

func sumInt(b []byte, c chan int) {
    sum := 0
    for _, num := range b {
        sum += int(num)
    }
    c <- sum
}

func BenchmarkSum(b *testing.B) {
    for N := 0; N < b.N; N++ {
        dat := make([]byte, 4*1024)
        partSum1 := make(chan int)
        partSum2 := make(chan int)
        go sumInt(dat[:len(dat)/2], partSum1)
        go sumInt(dat[len(dat)/2:], partSum2)
        sum := <-partSum1 + <-partSum2
        _ = sum
    }
}
0
ответ дан peterSO 18 January 2019 в 18:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: