Loopback
|
Posted: Mon Sep 29, 2025 00:08 Post subject: |
|
|
yozhik wrote: | Такая вот загрузка редко используемого как то влияет негативно на работу в TC? Ну, там скорость загрузки или память «забивает» — это я не сам придумываю, просто слышал от других, что, мол, «лишний балласт», то, сё. А в реальности как? Насколько такой подход к решению моей задачи целесообразен, практичен, экономен? |
В принципе, естественно, влияет и на скорость загрузки, и на потребляемую память. Время требуется для парсинга, а то что отпарсилось занимает некоторое количество памяти.
Насчет точной количественной оценки как-то не задумывался, но структура скрипта в памяти будет занимать несколько больше, чем исходный текст. Вопрос только насколько больше. Например, условие If..else..endif занимает 36 байт в х86 и 64 байта в х64, For..Next - 40 и 72, пользовательская функция 64 и 112 соответственно и т. д. По 16/24 байта занимают место переменные (впрочем, они создаются только при вызове функции, поэтому их можно не считать). Всё это, конечно, не считая длины строк (которые в свою очередь UTF-16): литералов, выражений, имён и значений переменных и т. д.
Например, размер памяти для кода из поста выше
Code: | If bEverything And StrPos(FileGetAttr(Target), "D") Then SendCommand(2002) |
я бы оценил где-то в 166/194 байт, при размере исходного текста 74 байта в ANSI или 148 байт в UTF-16. Думаю, не будет большой ошибкой считать объем памяти в 1.5-3 раза больше размера исходного текста (самая большая разница, если он в ANSI).
С загрузкой проще, поскольку можно легко оценить с помощью GetUptme, с текстом функции и без него. Сомневаюсь, что загрузка и парсинг нескольких килобайт текста выйдет за пределы погрешности измерения, но можно интереса ради проверить.
Ну а влияния на скорость работы TC после загрузки неработающие функции не оказывают. |
|