1

我需要一个在 Lua 中使用的二维矢量数据结构。到目前为止,我已经找到了几个解决这个问题的方法:

  1. 在纯 Lua 中定义数据类型的经典解决方案——缺点是对它的所有操作(如加法)都需要创建新的数据类型、设置元表等。x、y 存储为字段,因此访问速度很快。
  2. C端的经典完整用户数据解决方案——它可能更快,仍然允许操作员,操作代码是C端的,但仍然每个操作都需要分配一个新对象。虽然没有字段的可能性,所以需要做一个自定义的 __index/newindex 函数来模拟 x 和 y 在 Lua 方面可能很慢。
  3. 混合方法,我们定义一个 Lua 对象但通过 C 代码,x 和 y 仍然是具有简单访问的字段,但函数将用 C 编码,因此更快?

我确实尝试了#1 方法,但由于效率问题,我计划改用#2 或#3,但是我不知道哪个更有效。

另一方面,也有可能在编译器本身中对数据类型进行硬编码,但我认为我还没有准备好接受如此激进的想法:)(这并不像听起来那么疯狂,二维向量会很好适合原生 Lua 类型的两倍大小)。

这两种方法哪一种更有效?在这些情况下,有没有我没有想到的陷阱?

4

1 回答 1

3

选项 #4:将LuaJIT2FFI一起使用

查看相关工作

于 2011-04-25T18:41:05.843 回答