当前位置:首页 >> 休闲

Golang标准库和内部库的功用斗劲

序言:

我已在花费中独霸 Go 一段时分了,标准因为它的库和库构建局限较小 ,并且由 goroutines 供给的内部并发功用和直接在机械上运转构建的身手 ,所以我特别很是功用快活喜悦爱好它的疾速和刚毅 。

因为标准包的斗劲速度特别很是快 ,您可以在不独霸任何第三方库或框架的标准气候下构建花费伏贴的微处事。这真实不是库和库说 Go 中没有供给更多矫捷性或速度的框架 ,只是内部它们不那么受迎接。

官方但凡陈述你对立独霸标准库。功用具有嘲讽意味的斗劲是, golang 框架 的标准*** Google 搜刮下场一样往常都是关于为甚么不睬应独霸标准库。

我对标准库的库和库更调品举办了一些研究和基准测试 ,以体味它们的内部默示 。我将它们分为我认为是功用关头的微处事组件 。

全数基准测试都不才面列出的斗劲设置设备放置上运转。当然正常的基准测试时分只需 1 秒,但我将全数测试运转了 10 秒 ,以确保每个测试周期都是齐截的 。

  • 措置器 — 2.7 GHz Intel Core i7
  • RAM — 16GB — 16 GB 2133 MHz LPDDR3
  • Bench Time 10s 而不是标准的 1s
  • go test -bench=. -benchtime=10s

1 、路由

标准的 http Go 处事器带有一个不错的路由器,可以读取查询参数但不克不及读取定名参数 ,比如 ,

/students/:studentID/grades/:gradeID

任何具有上述嵌套成本的 REST 处事都必须独霸内部路由库来分析它们  。Gin、Echo、Beego、Gorilla Mux 和 Goji 只是个中几个驰名框架(屈就 Github 存眷量) 。

个中一些是具有路由下场的成熟中心件框架 ,而此外一些则仅仅只是路由库  。

这些库针对单个定名参数举办了测试 ,下场以下所示,Gin 具有最快的路由器 ,Echo 排在第二位 。

2  、JSON 序列化和反序列化

一旦 API 请求经由过程路由器并传递到独霸器或措置法度圭表类型,下一步就是在前去照顾时对请求 JSON 或 Encode 举办解码 。

Go 有一个特别很是好的encoding包  ,它支撑多种格式,比如json, XML, csv  ,可是疾速不雅不雅不雅不雅鉴赏一下更调品会向你展示除夜量的库。我针对标准encoding/json包对 Jsoniter 、EasyJson 举办了基准测试  ,下场以下 。

上面是编码的下场,下场注解功用不合真实不单鲜较着

可是对解码 JSON,jsoniter奉行速度比标准编码包快 5 倍。

如今 ,假定您的请求已被解码,下一步多是独霸您的营业逻辑 ,并大年夜大年夜约奉行一些数据库独霸。

3、可否独霸ORM框架

除夜除夜都风行的言语都依托于框架来构建与数据库交互的微处事。在 Java 全国中 ,Hibernate、Active Record for Rails 和 Django ORM 特别很是风行 。ORM(对象相干映照器)有时有助于更好地措置义务、表之间的相干,并有助于阻拦为复杂邻接编写宏壮的 SQL。

可是 Go 再次具有一个特别很是好的database标准库,它使邻接到相干数据库变得特别很是随便,并且速度也特别很是快。可是 ,一个痛点是查询 。当您查询某些行时 ,您必须手动映照行中的每个字段,然后将它们分拨给struct. 这有效,但很快就会变得混乱并让您编写除夜量代码 。sqlx是一个库 ,它准予您将整行扫描到您的筹划变量中。

当然sqlx促进了为构建 CRUD 而编写的类型行数,但幻想下场仍会多次编写几回代码 。独霸 ORM 可以辅佐促进它并专注于您的营业逻辑。

database, database + sqlx, gorm , go-pg 对查询举办了基准测试 ,上面是下场 。令人诧异的是,go-pgORM 的奉行速度比标准包甚至sqlx还要快. GORM当然在生态琐细中特别很是驰名,但速度绝对较慢。

在 API 调用的每个法度圭表类型中 ,都有更好的框架或内部库 ,它们将使您的照顾更快并供给必定的矫捷性 。

4 、总结

当然一些内部库的功用改进特别很是较着,但这不睬应成为远离标准库的启事。诸如测试代码的难易程度、开源库的经久呵护、团队的进修曲线等都理应思虑在内 。当然如斯 ,我认为像 echo + jsoniter + go-pgGo 等标准库下场的全数令人畏敬的对象将是构建微处事并阻拦冗余代码的最快编制 。

到此这篇关于Golang标准库和内部库的功用斗劲的文章就引见到这了,更多相干Go言语标准库和内部库的功用内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载!

百科

序言:

我已在花费中独霸 Go 一段时分了,标准因为它的库和库构建局限较小 ,并且由 goroutines 供给的内部并发功用和直接在机械上运转构建的身手 ,所以我特别很是功用快活喜悦爱好它的疾速和刚毅 。

因为标准包的斗劲速度特别很是快 ,您可以在不独霸任何第三方库或框架的标准气候下构建花费伏贴的微处事。这真实不是库和库说 Go 中没有供给更多矫捷性或速度的框架 ,只是内部它们不那么受迎接。

官方但凡陈述你对立独霸标准库。功用具有嘲讽意味的斗劲是, golang 框架 的标准*** Google 搜刮下场一样往常都是关于为甚么不睬应独霸标准库。

我对标准库的库和库更调品举办了一些研究和基准测试 ,以体味它们的内部默示 。我将它们分为我认为是功用关头的微处事组件 。

全数基准测试都不才面列出的斗劲设置设备放置上运转。当然正常的基准测试时分只需 1 秒,但我将全数测试运转了 10 秒 ,以确保每个测试周期都是齐截的 。

  • 措置器 — 2.7 GHz Intel Core i7
  • RAM — 16GB — 16 GB 2133 MHz LPDDR3
  • Bench Time 10s 而不是标准的 1s
  • go test -bench=. -benchtime=10s

1 、路由

标准的 http Go 处事器带有一个不错的路由器,可以读取查询参数但不克不及读取定名参数 ,比如 ,

/students/:studentID/grades/:gradeID

任何具有上述嵌套成本的 REST 处事都必须独霸内部路由库来分析它们  。Gin、Echo、Beego、Gorilla Mux 和 Goji 只是个中几个驰名框架(屈就 Github 存眷量) 。

个中一些是具有路由下场的成熟中心件框架 ,而此外一些则仅仅只是路由库  。

这些库针对单个定名参数举办了测试 ,下场以下所示,Gin 具有最快的路由器 ,Echo 排在第二位 。

2  、JSON 序列化和反序列化

一旦 API 请求经由过程路由器并传递到独霸器或措置法度圭表类型,下一步就是在前去照顾时对请求 JSON 或 Encode 举办解码 。

Go 有一个特别很是好的encoding包  ,它支撑多种格式,比如json, XML, csv  ,可是疾速不雅不雅不雅不雅鉴赏一下更调品会向你展示除夜量的库。我针对标准encoding/json包对 Jsoniter 、EasyJson 举办了基准测试  ,下场以下 。

上面是编码的下场,下场注解功用不合真实不单鲜较着

可是对解码 JSON,jsoniter奉行速度比标准编码包快 5 倍。

如今 ,假定您的请求已被解码,下一步多是独霸您的营业逻辑 ,并大年夜大年夜约奉行一些数据库独霸。

3、可否独霸ORM框架

除夜除夜都风行的言语都依托于框架来构建与数据库交互的微处事。在 Java 全国中 ,Hibernate、Active Record for Rails 和 Django ORM 特别很是风行 。ORM(对象相干映照器)有时有助于更好地措置义务、表之间的相干,并有助于阻拦为复杂邻接编写宏壮的 SQL。

可是 Go 再次具有一个特别很是好的database标准库,它使邻接到相干数据库变得特别很是随便,并且速度也特别很是快。可是 ,一个痛点是查询 。当您查询某些行时 ,您必须手动映照行中的每个字段,然后将它们分拨给struct. 这有效,但很快就会变得混乱并让您编写除夜量代码 。sqlx是一个库 ,它准予您将整行扫描到您的筹划变量中。

当然sqlx促进了为构建 CRUD 而编写的类型行数,但幻想下场仍会多次编写几回代码 。独霸 ORM 可以辅佐促进它并专注于您的营业逻辑。

database, database + sqlx, gorm , go-pg 对查询举办了基准测试 ,上面是下场 。令人诧异的是,go-pgORM 的奉行速度比标准包甚至sqlx还要快. GORM当然在生态琐细中特别很是驰名,但速度绝对较慢。

在 API 调用的每个法度圭表类型中 ,都有更好的框架或内部库 ,它们将使您的照顾更快并供给必定的矫捷性 。

4 、总结

当然一些内部库的功用改进特别很是较着,但这不睬应成为远离标准库的启事。诸如测试代码的难易程度、开源库的经久呵护、团队的进修曲线等都理应思虑在内 。当然如斯 ,我认为像 echo + jsoniter + go-pgGo 等标准库下场的全数令人畏敬的对象将是构建微处事并阻拦冗余代码的最快编制 。

到此这篇关于Golang标准库和内部库的功用斗劲的文章就引见到这了,更多相干Go言语标准库和内部库的功用内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载!


{dede:include filename="menu.htm"/}