Почему время выполнения моей программы изменяется, когда я использую go run
против go build
и выполняю свою программу?
Я использую пакет time
для измерения времени, прошедшего во время выполнения программы, и наткнулся на это поведение.
package main
import (
"fmt"
"io/ioutil"
"time"
)
func sumInt(b []byte, c chan int) {
sum := 0
for _, num := range b {
sum += int(num)
}
c <- sum
}
func main() {
start := time.Now()
dat, err := ioutil.ReadFile("nums.txt")
if err != nil {
return
}
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
fmt.Println(sum)
elapsed := time.Since(start)
fmt.Printf("Elapsed %s\n", elapsed)
}
❱ go run runtime.go
2502263
Elapsed 133.893µs
❱ go build runtime.go
❱ ./runtime
2502263
Elapsed 402.435µs
❱