ps:更不用说同一任务的闭包实现的代码复杂性。
答案 0 :(得分:2)
闭包的内存开销小于协程的内存开销(除非你在闭包中有很多的“upvalues”,而且在协程中没有)。调用闭包的时间开销也可以忽略不计,而调用协程则有一些小的开销。从我所看到的,Lua在使用协程开关方面做得非常好,但如果性能很重要并且您可以选择不使用协程,那么您应该探索该选项。
如果你想自己做一个基准测试,对于Lua中的这个或其他任何东西:
使用collectgarbage("collect");collectgarbage("count")
报告所有非垃圾回收内存的大小。 (你可能想要“收集”几次,而不仅仅是一次。)在创建一些东西(一个闭包,一个协程)之前和之后做它,以了解它消耗的大小。
您使用os.clock()
计时。
另见Lua编程on profiling。