美文网首页
Go1.14(即将发布)中的性能改进

Go1.14(即将发布)中的性能改进

作者: 司青玄 | 来源:发表于2020-02-25 01:19 被阅读0次

Go1.14即将于2020年2月底发布,这个版本有一些值得注意的性能改进,如下:

  • defer

跟正常的函数调用相比,defer几乎已经没有额外的开销了。你可以在对性能极度敏感的代码中放心的使用defer了。

  • 调度器

Goroutine支持真正意义上的抢占式调度了。我们知道在老版本中,goroutine只有当遇到I/O操作、管道/同步操作或者用户主动调用了runtime.Gosched()时才会让出执行权,而为了避免一个goroutine长期运行"饿死"其他goroutine, Go编译器还会在调用另一个函数之前埋点,即检测一下当前goroutine是否已经长时间执行以决定是否切换到其他goroutine执行。这并不是真正意义上的抢占,只是一种模拟,它有个明显的缺点,就是无法处理长时间执行且没有调用其他函数的循环体。在Go1.14版本中,除了windows-arm, darwin-arm, js-wasm, plan9平台外都将支持抢占式协程调度。

  • 页分配器(Page Allocator)

Page Allocator在GOMAXPROCS很大的情况下的锁竞争更少了。这样带来的好处是,并行分配内存时速度更快、延迟更低。

  • 内置Timer

标准库内置的定时器现在更加高效了---- 减少了锁竞争和上下文切换次数。

个人感觉意义最大的当属抢占式调度的引入。之前有人在CPU密集型的任务中经常会遇到其他协程长时间得不到调度的情况,当然对于CPU密集任务来说确实不应该搞太多协程,没啥意义,但是如果是用线程来实现的话这个问题是不存在的。相信1.14版本的发布可以让很多人缓解对协程调度不够“聪明”的担忧。

相关文章

  • Go1.14(即将发布)中的性能改进

    Go1.14即将于2020年2月底发布,这个版本有一些值得注意的性能改进,如下: defer 跟正常的函数调用相比...

  • Camtasia 2019.0.2 macOS苹果汉化中文版汉化

    Camtasia macOS苹果版发布了最新版2019.0.2,此次迭代依旧以修复问题和改进性能为主,以下是升级日...

  • SRE-1

    职责 可用性改进; 时延优化、性能优化、效率优化(软件的资源使用效率); 监控系统; 变更管理;渐进式发布机制迅速...

  • DENO 1.10发行说明

    Deno 1.10已经被标记并发布。它包含新功能、性能改进和错误修复。 最值得注意的是: 对内置test runn...

  • Printworks 2中的新功能详解

    Printworks 2带来了各种各样的新功能,包括新的发布工具,时尚的界面,改进的程序性能,标题预设的集合等等。...

  • 资讯|WebRTC M89 更新

    WebRTC M89 目前在 Chrome 测试版渠道发布,包含超过39个漏洞修复,功能增强,稳定性及性能改进。本...

  • Python 代码优化常见技巧

    ​改进算法,选择合适的数据结构 一个良好的算法能够对性能起到关键作用,因此性能改进的首要点是对算法的改进。在算法的...

  • Android studio 3.4 稳定版来了

    近期Android Studio 3.4 稳定版发布了。除了许多性能改进和错误修复之外,此版本还增添了一些新功能。...

  • Visual Studio 2017 更新内容大全(下)

    性能改进 改进性能是此版本的一个重点所在。 除对提高内存和响应作出一些优化外,整个 JavaScript/Type...

  • CentOS 下 MySQL 8.0 安装部署,超详细!

    正式版 已发布,官方表示 要比 快2倍,还带来了大量的改进和更快的性能!到底谁最牛呢? Mysql8.0安装 (Y...

网友评论

      本文标题:Go1.14(即将发布)中的性能改进

      本文链接:https://www.haomeiwen.com/subject/layoqhtx.html