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

时间:2010-01-19 10:58:34

标签: performance lua analysis

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

1 个答案:

答案 0 :(得分:2)

闭包的内存开销小于协程的内存开销(除非你在闭包中有很多的“upvalues”,而且在协程中没有)。调用闭包的时间开销也可以忽略不计,而调用协程则有一些小的开销。从我所看到的,Lua在使用协程开关方面做得非常好,但如果性能很重要并且您可以选择不使用协程,那么您应该探索该选项。

如果你想自己做一个基准测试,对于Lua中的这个或其他任何东西:

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

您使用os.clock()计时。

另见Lua编程on profiling