Затраты памяти для замыкания будут меньше, чем для сопрограммы (если только у вас нет много"повышенных значений" в замыкании и ни одного в сопрограмме). Кроме того, время, затрачиваемое на вызов замыкания, незначительно, тогда как для вызова сопрограммы есть небольшие накладные расходы. Из того, что я видел, Lua довольно хорошо работает с переключателями сопрограмм, но если производительность имеет значение, и у вас есть возможность не использовать сопрограмму, вам следует изучить этот вариант.
Если вы хотите сделать тесты самостоятельно, для этого или чего-то еще в Lua:
Вы используете collectgarbage("collect");collectgarbage("count")
, чтобы сообщить размер всей не подлежащей сборке мусора памяти. (Вы можете захотеть сделать «сбор» несколько раз, а не только один.) Делайте это до и после создания чего-либо (замыкание, сопрограмма), чтобы узнать, сколько он потребляет.
Вы используете os.clock()
для определения времени.
См. Также Программирование на Lua по профилированию .