noa*_*amt -5 environment-variables go
我有一段代码每隔几秒钟就会调用一次,并使用一个环境变量:
for {
myVar := os.Getenv("MY_VAR")
//Do something
time.Sleep(3 * time.Second)
}
Run Code Online (Sandbox Code Playgroud)
但是,重复拨打电话的费用是os.Getenv多少?
环境变量的值在运行时不会更改,因此我可以将其设置为程序包级变量:
package blah
var myVar = os.Getenv("MY_VAR")
Run Code Online (Sandbox Code Playgroud)
但这确实会损害代码的可测试性。
我应该将其设置为包级变量吗?还是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
}
Run Code Online (Sandbox Code Playgroud)
goos: darwin
goarch: amd64
BenchmarkEnv-8 20000000 78.7 ns/op
PASS
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |