登录
首页 >  Golang >  Go问答

Go 中的 Defer 似乎会增加延迟

来源:stackoverflow

时间:2024-04-12 20:30:38 204浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Go 中的 Defer 似乎会增加延迟》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我在 go 中使用互斥体进行同步。下面是代码

func (c *mystruct) put(key string, value interface{}) {
  c.mu.lock()
  defer c.mu.unlock()
  val, found := c.items[key]
  if found {
    item := val.value.(*item)
    item.value = value
    item.expiration = time.now().add(c.ttl).unixnano()
    return
  }
  ele := c.list.pushfront(&item{key, value, expirationtime})
  c.items[key] = ele
}

当我对此进行基准测试时,输出似乎是

benchmarkxxx-12      5000000           206 ns/op          37 b/op          2 allocs/op

但是当我更改代码并在函数结束时手动解锁互斥锁时。它正在提高性能。

BenchmarkLru_put-12     10000000           157 ns/op          26 B/op          2 allocs/op

延迟函数是否会增加代码的延迟?在这种情况下我需要避免使用 defer 吗?


解决方案


defer 执行另一个函数,所以是的,它增加了额外的开销。

您可以阅读更多详情here

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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