Хз, скрипты жрут предельно мало ресурсов, так что если немножко не оптимизированно - не страшно. Это во-первых.
Во-вторых, конечно, громоздкие конструкции и неоптимизированный по размеру код нагружает лишь оперативку, а это - пару килобайт в итоге в самых тяжелых случаях и +10-20 ms к задержке загрузки в наитяжелейших случаях(утверждаю, основываясь на многочисленных тестах).
Конечно, я могу не корректно изъясняться, но я сейчас веду речь именно про само устройство кода скрипта, а не оптимизацию переменных и т.д.
В-третьих, исходя из предыдущих пунктов, писать "высокоуровневым способом" имеет смысл лишь если это тебе в кайф(думай в первую очередь о себе), но если ты ратуешь за оптимизацию, то декомпилируй свой скрипт и ужаснись количеством бессмысленных jump-ов, а особенно - замечательной концовкой:
:SOME_1051
jump @SOME_87
jump @SOME_87
end_thread
Я сейчас ни в коем случае не наезжаю(что-что, а я наезжать со своей криворукостью просто не имею права), и может даже где-то ошибаюсь, но просто даю дельный совет для упрощения жизни тебе в первую очередь(для меня поэтому скриптинг - сплошное удовольствие, включая даже поиск багов), а именно:
В-четвертых - низкоуровневый скриптинг позволяет за пару мгновений проследить логику скрипта(чужого или своего, если подзабыл) - конечно, если скрипт был написан низкоуровневым способом. Также в этом случае не возникает путаниц с else-ами, jump-ами, gosub-ами и прочим.
Это всё, конечно, при условии, если пишешь большие скрипты и влом выискивать баги. В низкоуровневом коде легко отключать нужные секции, ставить wait-ы там где надо, чтобы выловить ошибку и т.д.
А еще в этом случае будет удобно не делать параллельный поток, а сделать продолжение потока, в котором будет запускаться автоматический таймер 16@ = 0, создаваться другой цикл с проверкой значения таймера.
А так в угоду красивому исходнику и созданию единого цикла с одним wait-ом прибавляется куча гемора. - это я не конкретно про твой скрипт, а вообще про типичные высокоуровневые исходники, что я видел.
Повторюсь, это конечно на любителя, но ты должен понимать, что высокоуровневый код добавляет мусора в скрипт(если ты ратуешь за производительность).
По факту конечно, опять же - повторюсь: все эти "замедления работы" столь не значительны, что можно наплевать на это(реальный "бич" производительности - лишние wait-ы).
Ну и в-пятых, в справке SB есть подробное описание вызова scm-функции с примерами в описании аналогичного опкода в SA: 0AB1.