Struck 61 Опубликовано 4 Января 2015 @Zander_driver, Артос не выкладывал свой рефакторинг скриптов для общего пользования (он только в симбионе, ну и местами его почерк в ЛА проглядывается), он выкладывал готовые модули с понятными инструкциями, потому их все и используют, а описывать весь его рефакторинг комменатриями я думаю занятие весьма долгое (и опять же его не каждый поймет, не говоря уже об использовании), я вот разобрался в его скриптах, и многое почерпнул, за что ему прямо могу сказать большое спасибо. Ну вот скажи, зачем перелопачивать кучи if-then-end? Там выигрыш опять же применимо для сталкера довольно не велик, вот тебе пример, возьмем простую функцию, которая режет взгляд: function compare_part(a, local l = math.min(string.len(a),string.len() if string.sub(a, 1, l) == string.sub(b, 1, l) then return true end return false end Задаемся целью убрать ненавистный тут нам всем if-then-end, я переписал вот так (конечно переписать можно под унифицированный вид, как многие любят, но пока остановимся на адекватном варианте, а именно том, который требует наша задача): function compare_part(a, local l = math.min(#a,# return rawequal(string.sub(a, 1, l),string.sub(b, 1, l)) end Мой вариант показывает явный положительный результат (выигрыш ~ 10 сотых секунды) на 80 тысячах итераций (плюс начинает появляться на >50т итераций). Собственно вывод? Смотрится красивее, скрипт будет весить на несколько килобайт меньше при полной его переработке, а для игры "плюс" и не велик вроде как, т.к. опять же, ну кто тебе будет 80т раз две строки сравнивать? Поэтому такие переделки либо для каких-нибудь любителей красивого кода, либо для таких как Денис, которые гонятся за прибылью в наносекунды. Понятно, что хорошо будет, если каждый единичный if-then перепишем на тернарный оператор, а каждые if-then-elseif на ассоциативные массивы, заменив попутно все корявые конструкции на стандартные луа-функции, но ощутимый и существенный плюс то какой, я так и не понимаю. За скоростью гнаться надо когда у тебя "синхронизация" идет минут 5 или больше. А, да, речь шла о Дезертире и Полтергейсте. Поделиться этим сообщением Ссылка на сообщение