gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:39:30 26 4
gpt4 key购买 nike

我一直在努力决定如何将 Lua 嵌入到我的应用程序中以用于脚本和扩展目的。我有一个处理具有类似于 Lua 表的结构的对象的类。 (特别是 boost::any 的 HashMap )Lua 脚本将与这些对象及其 HashMap 进行交互。

我越来越清楚我可以用 Lua 编写这个类的全部或大部分(并从 C 访问它),但我不确定这样做的后果,尤其是与创建相关的内存使用许多表来表示 HashMap 。得出这个结论的原因是我想在这些 C 对象中存储来自 Lua 的高级结构,但是这样做将需要在每次将表存储到 C 对象中或从中检索时进行显式表序列化。从理论上讲,这种方法将提供更少的内存使用量,以换取更高的每次访问延迟。

在这种情况下可能采取的行动及其优缺点是什么?

最佳答案

我最终决定使用 LuaJITLua 中编写我的大部分应用程序。 ,出于多种原因,包括:

  • 我试图通过 C/C++ 实现的目标已经存在于 Lua 中,特别是哈希表和元设施,我基本上是在重新发明轮子。
  • 我做了一些简单的基准测试,发现我的大多数脚本总是会非常频繁地跳出对 C 的调用并返回到 Lua,我可以优化掉通过利用字节码编译器将运行时重点限制在 Lua 上,其中很多。
  • 根据我对即时编译相关主题的有限经验和研究,LuaJIT (2.0.0-beta8) 被证明速度足以满足我目前的需求,而且很可能接近到类似数据结构的 C++ 内存使用水平。
  • LuaJIT 还可以作为普通 Lua 的直接替代品,并且易于构建;我所要做的就是链接到它的库以启动并运行它。

我觉得这样做会失去对我的项目的一些“高级用户”控制,但我认为这是由于我对 Lua 的复杂性缺乏经验,而我的知识不足C++

关于c - 脚本和主机应用程序之间的责任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com