作家
登录

Go语言的9大优势和3大缺点

作者: 来源: 2017-10-24 14:21:39 阅读 我要评论

另一个问题是我们可能会忘记处理报错。诸如 errcheck 和 megacheck 等静态分析对象可以避免出现这些掉误。固然这些解决筹划十分有效,但可能并不是那么精确的办法。

Go 说话的软件担保理绝对不是完美的。默认情况下,它没有办法制订特定版本的依附库,也无法创建可复写的 builds。比拟之下 Python、Node 和 Ruby 都有更好的软件担保理体系。然而经由过程精确的对象,Go 说话的软件担保理也可以表示得不错。

我们可以应用 Dep 来治理依附项,它也能指定特定的软件包版本。除此之外,我们还可以应用一个名为 VirtualGo 的开源对象,它能轻松地治理 Go 说话编写的多个项目。

图5:Go说话的9大年夜优势和3大年夜缺点

Python vs Go

对我们这么大年夜小的团队(大年夜约 20 人)而言,生态体系很重要。如不雅你须要重做每块功能,那就无法为客户创造收益了。Go 有着强大年夜的对象支撑,面向 Redis、RabbitMQ、PostgreSQL、Template parsing、Task scheduling、Expression parsing 和 RocksDB 的稳定的库。

  1.    "functions": { 
  2.        "simple_gauss": { 
  3.            "base""decay_gauss"
  4.            "scale""5d"
  5.            "offset""1d"
  6.            "decay""0.3" 
  7.        }, 
  8.        "popularity_gauss": { 
  9.            "base""decay_gauss"
  10.            "scale""100"
  11.            "offset""5"
  12.            "decay""0.5" 
  13.        } 
  14.    }, 
  15.    "defaults": { 
  16.        "popularity": 1 
  17.    }, 
  18.    "score""simple_gauss(time)*popularity"

Python 和 Go 代码都须要以下请求大年夜而支撑膳绫擎的排序办法:

  • 解析得分的表达。在此示例中,我们想要把 simple_gauss(time)*popularity 字符串改变为一种函数,可以或许把 activity 作为输入然后给出得分作为输出。
  • 在 JSON config 上创建部分函数。例如,我们想要「simple_gauss」调用「decay_gauss」,且带有的键值对为”scale”: “5d”、”offset”: “1d”、”decay”: “0.3”。
  • 解析「defaults」设备,便于某个范畴没有明白定义的情况下有所反馈。
  • 大年夜 step1 开端应用函数,为 feed 中的所有 activity 打分。

开辟 Python 版本排序代码大年夜约须要 3 天,包含写代码、测试和建立文档。接下来,我么花费大年夜约 2 周的时光优化代码。个一一个优化是把得分表达 simple_gauss(time)*popularity 转译进一个抽象语法树。我们也实现了 caching logic,之后会预先计算每次的得分。

比拟之下,开辟 Go 版本的代码须要 4 天,但之后不须要更多的优化。所以固然最初的开辟上 Python 更快,但 Go 最终须要的工作量更少。此外,Go 代码要比高度优化的 python 代码快了 40 多倍。


  推荐阅读

  被小程序坑了这几点,你遇到了吗?

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 因为你只须要简单进修三种说话的写法,就能轻松上手开辟小法度榜样。固然说的很有事理,我并不否定小法度榜>>>详细阅读


本文标题:Go语言的9大优势和3大缺点

地址:http://www.17bianji.com/lsqh/38136.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)