我一直在努力决定如何将Lua嵌入到我的应用程序中以实现脚本和扩展。
我有一个类来处理具有类似Lua表的结构的对象。 (特别是boost::any
的哈希映射)
Lua脚本将与这些对象及其哈希映射进行交互。
我越来越清楚,我可以在Lua中编写这个类的全部或大部分(并从C访问它),但我不确定这样做的后果,特别是关于创建的内存使用许多表来表示哈希映射。 得出这个结论的原因是我想在这些C对象中存储来自Lua的高级结构,但是每次将表存储到C对象或从C对象检索时,这样做都需要显式的表序列化。从理论上讲,这种方法可以在权衡中提供更少的内存使用,从而实现更高的每次访问延迟。
在这种情况下可能采取的行动方案及其优缺点是什么?
答案 0 :(得分:2)
我最终决定使用LuaJIT在 Lua 中对我的大部分应用程序进行编程,原因有很多,其中包括:
我觉得通过这样做,我失去了对我的项目的“权力用户”控制权,但我认为这是由于我对 Lua 的错综复杂的经验与我的知识相比 C ++ 。
答案 1 :(得分:0)
如果我已经正确理解了你的问题,你想简单地使用Lua来避免必须序列化数据(进出文件,我猜)。如果是这种情况,你可以使用Lua,但对我来说似乎有点矫枉过正。
回答你的上一个问题,Lua将占用比本机C更多的内存,并且运行速度会更慢(Lua VM比本机C慢,即使你只使用C来操纵从Lua到C的“跳跃”反之亦然会以Lua堆栈中的大量推送和弹出形式处罚。
如果您希望序列化更容易,可能最好使用直接与C串行化的库。例如,json。