У меня есть фрагмент кода, который вызывается каждые несколько секунд и использует переменную среды:
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