加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

当Go赶上了Lua,会产生什么

发布时间:2019-03-15 07:16:11 所属栏目:建站 来源:Jiahonzheng
导读:在 GitHub 玩耍时,偶尔发明白 gopher-lua ,这是一个纯 Golang 实现的 Lua 假造机。我们知道 Golang 是静态说话,而 Lua 是动态说话,Golang 的机能和服从各说话中示意得很是不错,但在动态手段上,必定是无法与 Lua 对比。那么假如我们可以或许将二者团结起

由于新建一个 Lua 假造机遇涉及到大量的内存分派操纵,假如回收每次运行都从头建设和烧毁的方法的话,将耗损大量的资源。引入假造机实例池,可以或许复用假造机,镌汰不须要的开销。

  1. func BenchmarkRunWithoutPool(b *testing.B) {  
  2.     for i := 0; i < b.N; i++ {  
  3.         l := lua.NewState()  
  4.         _ = l.DoString(`a = 1 + 1`)  
  5.         l.Close()  
  6.     }  
  7. }  
  8. func BenchmarkRunWithPool(b *testing.B) {  
  9.     pool := newVMPool(nil, 100)  
  10.     for i := 0; i < b.N; i++ {  
  11.         l := pool.get()  
  12.         _ = l.DoString(`a = 1 + 1`)  
  13.         pool.put(l)  
  14.     }  
  15. }  
  16. // goos: darwin  
  17. // goarch: amd64  
  18. // pkg: glua  
  19. // BenchmarkRunWithoutPool-8          10000            129557 ns/op          262599 B/op        826 allocs/op  
  20. // BenchmarkRunWithPool-8            100000             19320 ns/op           85626 B/op         67 allocs/op  
  21. // PASS  
  22. // ok      glua    3.467s 

Benchmark 功效表现,假造机实例池简直可以或许镌汰许多内存分派操纵。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读