1

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

4

1 回答 1

2

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

如果您想自己做基准测试,为此或 Lua 中的任何其他内容:

collectgarbage("collect");collectgarbage("count")用来报告所有非垃圾回收内存的大小。(您可能想要“收集”几次,而不仅仅是一次。)在创建某些东西(闭包、协程)之前和之后执行此操作,以了解它消耗了多少大小。

你习惯于os.clock()计时。

另请参阅有关分析的 Lua 编程。

于 2010-02-26T13:23:38.137 回答