我刚开始使用C++和Luajit进行尝试,我发现它的FFI非常易于使用,但我不确定它是否是所有情况(或至少大多数情况)下的最佳解决方案。
那么,使用其中一个比另一个更好,还是只是个人喜好?
正如LuaJIT网站所述,通过FFI绑定的C函数调用可以进行JIT编译(与通过Lua C / API调用相反),因此在性能方面FFI肯定更好。此外,使用FFI,您可以在Lua中使用本机C类型进行计算,在某些情况下可以进一步提高性能(例如)。
使用FFI时可能会遇到一个问题(如果您习惯于C / API),即当您想要一个C函数返回多个值时。在Lua C / API中,这很简单,但是在FFI的情况下,这需要一些技巧(例如为FFI C调用编写包装器函数)。但是我认为这是一个很小的缺点,考虑到您获得的易用性和性能。
还有一些安全注意事项,例如,如果您的应用程序允许第三方脚本化,那么滥用FFI将会毫不留情地崩溃您的应用程序而没有警告。