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

脚本和主机应用程序之间的责任,第1张

概述我一直在努力决定如何将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的了解缺乏经验.

总结

以上是内存溢出为你收集整理的脚本和主机应用程序之间的责任全部内容,希望文章能够帮你解决脚本和主机应用程序之间的责任所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1229582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存