我有一段代码每隔几秒钟被调用一次,并且使用了一个环境变量:
for {
myVar := os.Getenv("MY_VAR")
//Do something
time.Sleep(3 * time.Second)
}
但是重复调用os.Getenv
有多昂贵?
环境变量的值在运行时不会更改,因此我可以将其设置为程序包级变量:
package blah
var myVar = os.Getenv("MY_VAR")
但这会损害代码的可测试性。
我应该将其设置为包级变量吗?还是os.Getenv
足够好?
编辑:
我已经对os.Getenv
的通话进行了基准测试,但是可靠吗?
package main_test
import (
"os"
"testing"
)
var result string
func BenchmarkEnv(b *testing.B) {
var r string
for n := 0; n < b.N; n++ {
r = os.Getenv("PATH")
}
result = r
}
goos: darwin
goarch: amd64
BenchmarkEnv-8 20000000 78.7 ns/op
PASS