登录
首页 >  Golang >  Go问答

os.Getenv 的价值如何评估?

来源:stackoverflow

时间:2024-03-02 10:39:23 409浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《os.Getenv 的价值如何评估?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我有一段代码每隔几秒调用一次并使用环境变量:

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

解决方案


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

通过查看其实现 here,其成本为:

  1. 读锁;
  2. 在全球地图中查找;
  3. 线性搜索字符“=”。

今天关于《os.Getenv 的价值如何评估?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>