我有一段代码每隔几秒调用一次并使用环境变量:
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
LEATH
相关分类