如果您将大部分时间花在 Lua 上,那么在 Lua 中实现的处理器密集度不是很高的函数很可能比 C 中的函数更有效。如果您在未来某个时间最终使用LuaJIT ,则尤其如此。如果它是语言中的函数,编译器总是能够从你的函数中推断出更多的信息,而不是它是一些它不知道的晦涩的 C 函数,并且它不必在不同的上下文中做太多的跳跃。
在 C 中实现的问题Z_
是您还必须dict
在 C 中实现,而 Lua 已经具备这样的功能。所以,这取决于你是否需要一些特别优化的哈希图,也许 C 会更好。
如果您关心函数调用效率,为什么不缓存结果呢?
-- instead of doing:
print(Z_('Hello world! My name is %1!', 'Lua'))
-- perhaps do this:
local greeting = Z_('Hello world! My name is %1!', 'Lua')
print(greeting)
-- reuse greeting at some later time.
当然,您的Z_
函数看起来还不需要替换,但我认为以后可能会。但是,如果您从不需要替换,也可以将其设为这样的表格:
local Z = setmetatable({}, {__index = function(t,k) return k end})
Z['greetings'] = 'Hello world!'
print(Z['greetings']) -- Hello world!
print(Z['goodbye']) -- goodbye
__index
如果该表没有这样的条目,则该表有一个返回使用的键的元方法。