gopher-lua初步了解

news/2025/1/11 0:51:41/

最近看到golang里面有人实现了一套lua的调用库。
go-lua
https://github.com/yuin/gopher-lua
github.com/aarzilli/golua/lua

性能对比
This exercises the call stack implementation. When computing fib(35), go-lua is about 6x slower than the C Lua interpreter. Gopher-lua is about 20% faster than go-lua. Much of the performance difference between go-lua and gopher-lua comes from the inclusion of debug hooks in go-lua. The remainder is due to the call stack implementation - go-lua heap-allocates Lua stack frames with a separately allocated variant struct, as outlined above. Although it caches recently used stack frames, it is outperformed by the simpler statically allocated call stacks in gopher-lua.

  $ time lua fibr.luareal  0m2.807suser  0m2.795ssys   0m0.006s$ time glua fibr.luareal  0m14.528suser  0m14.513ssys   0m0.031s$ time go-lua fibr.luareal  0m17.411suser  0m17.514ssys   0m1.287s

这套方案,是使用golang完整编写了一套lua vm,性能非常差。而且这套东西是不能兼容使用C语言编写的三方库lua库,打比方就是protobuf-c的库就无法使用。其实这样就局限了这套代码的用途了。如果是使用来编写一些简单的逻辑,是可以的。做做配置也是不错,但是其他的事情,这个是不合适的。


http://www.ppmy.cn/news/809594.html

相关文章

gopher-lua 在lua脚本中直接调用修改go中status

由于最近将java项目迁移到go项目中, java项目中原本使用的MVEL动态脚本需要在go中找到相应的脚本语言替换. 找到了gopher-lua 测试了下性能方面还不错. github地址 https://github.com/yuin/gopher-lua 发现在lua脚本中直接调用的go中status中的属性 并修改值的话需要使用到go…

YUM简介

YUM简介 什么是YUM,其作用是什么,主要支持哪几种方式提供软件源? 是一种基于“C/S”结构的RPM软件更新机制,所有的软件包由集中的软件仓库提供,能够自动分析并解决软件包之间的依赖关系。 支持的软件源主要包括&…

一款可定时发圈和标签群发的微信管理软件是什么样的?

什么是时间管理?它是一种科学的解释,意味着时间的流逝是不可阻挡的,但是可以通过掌握时间来获取更多的改变。那如何在有限的生命里而做更多有意义的事情呢?学习一下时间管理,你一定会从中得到启发和答案的。 1.先确定…

在 Golang 项目使用 GitHub fork 出来的项目(go mod 的 replace)

今天从 GitHub 克隆了一个别人的 Golang Markdown 项目,作了些修改,想使用自己的版本,发现不行,因为模块的路径不对,导致导入出错。 原来的模块路径和文件(go.mod): github.com/yuin/goldmark module gith…

GO的lua虚拟机 gopher-lua

https://github.com/yuin/gopher-luahttps://github.com/yuin/gopher-lua Lua 5.1 Reference Manual - contentshttp://www.lua.org/manual/5.1/ Extending Lua with Go types – Marin Atanasov Nikolov – A place about Open Source Software, Operating Systems and some …

Golang lua交互——gopher-lua中call函数使用

gopher-lua github: https://github.com/yuin/gopher-lua 这是目前github中最受欢迎的一个用于golang和lua交互的开源库,在做项目时需要用到其中的call函数,由于与c的lua_call有些区别,因此在这里介绍一下call函数的用法 golang和lua交互的…

【Go-Lua】Golang嵌入Lua代码——gopher-lua

Lua代码嵌入Golang Go版本:1.19 首先是Go语言直接调用Lua程序,并打印,把环境跑通 package mainimport lua "github.com/yuin/gopher-lua"func main() {L : lua.NewState()defer L.Close()// goerr : L.DoString(print("go g…

浅谈如何使用 github.com/yuin/gopher-lua

1、 gopher-lua 基础介绍 我们先开看看官方是如何介绍自己的: GopherLua is a Lua5.1( goto statement in Lua5.2) VM and compiler written in Go. GopherLua has a same goal with Lua: Be a scripting language with extensible semantics . It provides Go AP…