运维开发网

脚本和主机应用程序之间的责任

运维开发网 https://www.qedev.com 2020-03-07 17:59 出处:网络 作者:运维开发网整理
我一直在努力决定如何将Lua嵌入到我的脚本和扩展应用程序中. 我有一个类来处理具有类似Lua表的结构的对象. (特别是boost :: any的哈希映射) Lua脚本将与这些对象及其哈希映射进行交互. 我越来越清楚,我可以在Lua中编写这个类的全部或大部分(并从C访问它),但我不确定这样做的后果,特别是关于创建许多表的内存使用表示哈希映射. 得出这个结论的原因是我想在这些C对象中存储来自Lua的高
我一直在努力决定如何将Lua嵌入到我的脚本和扩展应用程序中.

我有一个类来处理具有类似Lua表的结构的对象. (特别是boost :: any的哈希映射)

Lua脚本将与这些对象及其哈希映射进行交互.

我越来越清楚,我可以在Lua中编写这个类的全部或大部分(并从C访问它),但我不确定这样做的后果,特别是关于创建许多表的内存使用表示哈希映射.

得出这个结论的原因是我想在这些C对象中存储来自Lua的高级结构,但是每次将表存储到C对象或从C对象检索时,这样做都需要显式的表序列化.从理论上讲,这种方法可以在权衡中提供更少的内存使用,从而实现更高的每次访问延迟.

在这种情况下,可能的行动方案有哪些,以及它们的优缺点?

我最终决定使用 LuaJIT来解决我在Lua中的大多数应用程序的编程,原因有很多,其中包括:

>我试图通过C/C++实现的目标已经在Lua中,特别是散列表和元变量,我基本上重新发明了轮子.

>我做了一些简单的基准测试,并发现我的大多数脚本总是最终反复调用C并回到Lua,并且我可以通过利用字节码将运行时焦点限制在Lua来优化掉大量的编译器.

>根据我对即时编译主题的有限经验和研究,LuaJIT(2.0.0-beta8)在这一点上证明足够快,足以满足我的需求,并且很可能接近类似数据的C级内存使用结构.

> LuaJIT也可以作为香草Lua的直接替代品,并且易于构建;我所要做的就是链接到它的库以使其运行起来.

通过这样做,我觉得我失去了对我的项目的“权力用户”控制权,但我认为这是由于我对Lua的复杂性与我对C的了解缺乏经验.

0

精彩评论

暂无评论...
验证码 换一张
取 消