为了账号安全,请及时绑定邮箱和手机立即绑定

os.Getenv 有多贵?

os.Getenv 有多贵?

Go
largeQ 2023-06-19 17:01:24
我有一段代码每隔几秒调用一次并使用环境变量:for {    myVar := os.Getenv("MY_VAR")    //Do something    time.Sleep(3 * time.Second)}但是重复调用的成本是多少os.Getenv?环境变量的值在运行时不会改变,所以我可以将它设置为包级变量:package blahvar myVar = os.Getenv("MY_VAR")但这确实损害了代码的可测试性。我应该将它设置为包级变量吗?还是os.Getenv足够温和?编辑: 我已经对调用进行了基准测试,os.Getenv但它可靠吗?package main_testimport (    "os"    "testing")var result stringfunc BenchmarkEnv(b *testing.B) {    var r string    for n := 0; n < b.N; n++ {        r = os.Getenv("PATH")    }    result = r}goos: darwingoarch: amd64BenchmarkEnv-8      20000000            78.7 ns/opPASS
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

您可以对 os.Getenv 进行基准测试,看看它有多快。

在这里查看它的实现,它的成本是:

  1. 读锁;

  2. 在全球地图中查找;

  3. char '=' 的线性搜索。


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信