BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Go 1.10改进了工具链和性能

| 作者 Sergio De Simone 关注 19 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年3月5日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Go最新的1.10版并未在语言层面做出任何重大变更,而是在工具链、Go运行时和标准库上做了一系列的改进。

Go 1.10中的一个重大改进是缓存了构建结果,同时可以更好地检测过期软件包。具体而言,Go不再依赖于文件的修改时间去判断该文件是否需要做重编译,而是根据文件的内容、构建标志以及存储在编译后软件包中的元数据做出重编译的决策。这样,没有必要再指定原先用于强制重构建的“-a”标识。缓存构建包意在进一步优化构建时间,特别是当开发人员在一组构建标识或源代码版本和分支之间来回切换时。

与缓存构建类似,现在go test命令也对成功测试的结果做缓存。一旦go test检测到当前测试的可执行文件和命令行参数与上一次运行测试中所使用的匹配,那么命令将只输出缓存的测试结果。

通过允许嵌套调用LockOSThreadUnlockOSThread,Go 1.10运行时已可安全操作Linux命名空间。这意味着Goroutines现在可用于容器,排除了一些影响先前Go版本的障碍

此外,通过在更长时间跨度上使用更小部分的CPU,Go运行时改进了垃圾回收的分配延迟,同时不会对整体CPU消耗产生影响。

还应指出的是,Go的性能受益于垃圾回收的改进、标准库的优化,以及更好的代码生成。

根据Go团队的说法,主版本号如预期一样并没有发生变化,Go 1.10可与大部分使用先前1.x版本编译的程序保持兼容。

在Go 1.10中还引入了大量的改进,在此无法一一列举。完整细节可查看官方的发行说明

查看英文原文: Go Language 1.10 Improves Toolchain and Performance

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT