【发布时间】:2020-03-19 03:17:12
【问题描述】:
我想在我的应用程序中使用 lua 脚本做一些数学预计算,我不想硬编码它。我使用 LUA 作为 DLL 链接库。调用程序代码语言不是基于 C 的语言。
应用程序正在处理相当大的数组。该数组通常为 (25k-65k) * 8 双数数组。
我的目标是:
- 使用全局变量将此数组放入 lua 脚本中
- 从 lua 脚本读回这个数组
- 我想达到这个动作少于 100 毫秒。
目前我使用 28000 x 6 阵列进行测试,但时间为 5 秒。
我正在使用 lua_gettable 函数并遍历数组,这是大量的堆栈写入和读取。
我的问题是没有其他解决方案吗?我检查了 API,但也许我跳过了一些功能。是否有可能要求 lua 将数组子集放入堆栈?当然相反。
非常感谢您的帮助和建议!
【问题讨论】:
-
没有足够的信息来提出任何建议。没有描述访问模式,也没有描述移动数据的目的。如果您正在迭代数组,请考虑使用
lua_next(),您将节省一些时间在表键操作上,并且不需要显式调用 lua_gettable。 -
如果你想将数组转换为 lua 表,那么是的,那会很慢。将其作为指针(又名 userdata)推送,并使用一些方法来访问其值,除非您确实需要将其作为正确的表。
-
目的是,表格代表路线的曲线,我想使用一些不同的计算并修改原始数据并放回系统。我想更改脚本以使用不同的方法(视情况而定)。我使用一种 Mathlab,所以我检查我是否可以使用 C 指针(这就是我使用 dll 的原因)
标签: arrays performance lua