Re: Слишком большой sppr. Что с ним делать?

От: Dmitry Akindinov <CGatePro_at_mx_ru>
Дата: Thu 24 Mar 2011 - 15:07:15 MSK

Здравствуйте,

On 2011-03-24 14:40, Sergey Kronshtadtov wrote:
>>> Написал sppr-чик, а он не грузится. Говорит, что слишком большой размер
>>> сгенеренного чего-то. Это после 30 с небольшим килобайт началось.
>>
>> Это с какой версией CGPro? У вас вся програмка одним куском в виде
>> одного файла sppr выполнена? Тогда вынесите функции и процедурки в
>> отдельные sppi файлы.
>
> Версия, где-то между 5.2.5 и 5.2.8, судя по примерному времени
> установки. Мне кажется, что 5.2.6. Вечером уточню, если это не так.

Там ограничение было и меньше - 64к на код. Надо обновляться. Уж 5.2.20 всяко можно поставить.

> Sppr один, в нем main, еще две entry и две процедуры. Процедуры мелкие -
> нехватку места не пересиливают:( Помог бы вынос entry наружу, но пока не
> получилось.

Ну и main можно, наверное, на кусочки разбить?

>>> Пытался растащить разные ентри по разным файлам, но с ходу не сообразил
>>> как их потом спавнить. External для entry не прокатывает, spawn с
>>> указанием имени файла тоже.
>>> Собственно, вопросы
>>> - в последних версиях тоже размер скрипта ограничен? И какое точно там
>>> ограничение?
>>
>> Размер сгенерённого байт-кода для одного модуля - 1 MB.
>
> Ого. Это оно из обильно комментированного 35к скрипта 1м байткод
> раздуло?

В ранних 5.2 ограничение былу существенно меньше.

> Ну, то есть, это так и должно быть, или что-то идет не
> правильно? В байткод попадает только логическая выжимка, или имеет смысл
> удалять комментарии?

Комментарии туда не попадают. Строчки всякие (запись в лог, например) попадают.

>>> - а что теперь делать то с этим, собственно?:)
>>
>> Разделить код на модули.
>> <http://www.communigate.com/CommuniGatePro/CGPL.html#Module>
>
> Мануал почитываю, да:) Он ведь нас учит, что внешних entry не бывает,
> если я все правильно понял?

Но ничего не мешает оформить тело в виде процедуры, которая уже будет внешней?

> Нельзя ли как-то породить дочерний таск из другого, постороннего, sppr,
> например?

можно на него позвонить, можно запустить через CLI. Вопрос - нужно ли. Если не секрет - что увас там такого на 30к текста?

> Напрашивается попробовать несколько странный подход полннго выноса
> начинки entry наружу в виде процедуры и описание entry виде
> единственного вызова этой процедуры... Может быть, как то еще можно?

Эти самые entry должны быть на верхнем уровне. если они как-то друг друга запускают. А могут быть и спрятаны внутри процедур-функций. Возьмите, например, callerleg.sppi - реализует B2BUA, но пользователю этой библиотечной функции в простейших случаях и знать не надо, что внутри этой функции запускается ещё одна задача.

-- 
Best regards,
Dmitry Akindinov -- Stalker Labs.
Получено Thu Mar 24 12:07:23 2011

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:17:11 MSK