Performance 如何判断lua闭包和lua协程的权衡?(当两者可以执行相同的任务时)

Performance 如何判断lua闭包和lua协程的权衡?(当两者可以执行相同的任务时),performance,lua,analysis,Performance,Lua,Analysis,ps:更不用说同一任务的闭包实现的代码复杂性了。闭包的内存开销将小于协同路由的内存开销(除非闭包中有很多“upvalue”,而协同路由中没有)。此外,调用闭包的时间开销可以忽略不计,而调用协同路由的开销很小。从我所看到的,Lua在协同路由交换机方面做得相当好,但是如果性能很重要,并且您可以选择不使用协同路由,那么您应该探索该选项 如果您想自己进行基准测试,对于Lua中的这项或任何其他内容: 您使用collectgarbage(“collect”);collectgarbage(“count”)报

ps:更不用说同一任务的闭包实现的代码复杂性了。

闭包的内存开销将小于协同路由的内存开销(除非闭包中有很多“upvalue”,而协同路由中没有)。此外,调用闭包的时间开销可以忽略不计,而调用协同路由的开销很小。从我所看到的,Lua在协同路由交换机方面做得相当好,但是如果性能很重要,并且您可以选择不使用协同路由,那么您应该探索该选项

如果您想自己进行基准测试,对于Lua中的这项或任何其他内容:

您使用
collectgarbage(“collect”);collectgarbage(“count”)
报告所有非垃圾回收内存的大小。(你可能想“收集”几次,而不仅仅是一次。)在创建某个东西(闭包、协程)之前和之后都要这样做,以了解它所消耗的大小

您可以使用
os.clock()
来计时


另请参见Lua中的编程。

您是否有分析时遇到困难的示例?