как судить о компромиссе между закрытием луа и сопрограммой луа? (когда они оба могут выполнять одну и ту же задачу) - PullRequest
1 голос
/ 19 января 2010

ps: не говоря уже о сложности кода реализации замыкания той же задачи.

1 Ответ

2 голосов
/ 26 февраля 2010

Затраты памяти для замыкания будут меньше, чем для сопрограммы (если только у вас нет много"повышенных значений" в замыкании и ни одного в сопрограмме). Кроме того, время, затрачиваемое на вызов замыкания, незначительно, тогда как для вызова сопрограммы есть небольшие накладные расходы. Из того, что я видел, Lua довольно хорошо работает с переключателями сопрограмм, но если производительность имеет значение, и у вас есть возможность не использовать сопрограмму, вам следует изучить этот вариант.

Если вы хотите сделать тесты самостоятельно, для этого или чего-то еще в Lua:

Вы используете collectgarbage("collect");collectgarbage("count"), чтобы сообщить размер всей не подлежащей сборке мусора памяти. (Вы можете захотеть сделать «сбор» несколько раз, а не только один.) Делайте это до и после создания чего-либо (замыкание, сопрограмма), чтобы узнать, сколько он потребляет.

Вы используете os.clock() для определения времени.

См. Также Программирование на Lua по профилированию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...