Отсылка жирного HTTP-запрсоа -
ZaR - 05.05.2015
Подкосила меня жизнь, внезапно нужно написать небольшой кусок кода.
Я вкратце почитал стандарт Pawn (совсем мельком) и быстро не нашёл как и где выделяется память при использовании оператора new. Тем не менее, мне нужно сформировать большой массив данных и отправить их по HTTP.
При задании размера массива в 4096 (байт же?) этот ваш странный интерпретатор очень странно себя ведёт, не выполняя ничего (есть у меня предположение, что я стек таким образом переполняю). Тогда вопрос -- есть ли возможность в каком-то heap'е, если он вообще есть, выделять место?
Или же простой скриптовый язык никак не подразумевает работу с памятью?
Прошу прощения, что не уделил достаточного времени на изучение стандарта, совсем времени свободного нет.
Писать плагин, конечно, можно, но не хочется.
Спасибо.
Re: Отсылка жирного HTTP-запрсоа -
stabker - 05.05.2015
Память выделяется из стека. Размер стека можно увеличить так: #pragma dynamic количество_байт
Если речь о new array[4096], то это 4096 ячеек по 4 байта, а не 4096 байт (т.е. 4096 * 4 = 16384).
Re: Отсылка жирного HTTP-запрсоа -
ZaR - 05.05.2015
Спасибо.
Отлично, а 4 байта -- это по размеру int'а на целевой системе?
Но да ладно, string'и умеют паковаться, верно, судя по стандарту.
Оно нормально работает (или работает ли вообще) на данной версии Pawn-интерпретатора?
Ну и главный таки вопрос был -- а в heap'е-то мы можем выделять что-нибудь?
16 килобайт мне всё равно не хватит.
Re: Отсылка жирного HTTP-запрсоа -
ZiGGi - 05.05.2015
Создавай эту переменную глобально, ничего выделять не придётся. Но если ты имеешь ввиду выделение памяти динамически, то нет, без сторонних плагинов ничего не выйдет.
Запаковка работает нормально.
Re: Отсылка жирного HTTP-запрсоа -
White_116 - 05.05.2015
Quote:
Originally Posted by ZiGGi
Создавай эту переменную глобально, ничего выделять не придётся. Но если ты имеешь ввиду выделение памяти динамически, то нет, без сторонних плагинов ничего не выйдет.
Запаковка работает нормально.
|
Без плагинов можно, но достаточно медленно всё это при больших объёмах.
https://sampforum.blast.hk/showthread.php?tid=137501
Re: Отсылка жирного HTTP-запрсоа -
ZiGGi - 05.05.2015
Quote:
Originally Posted by White_116
|
*property - это не то, я имел ввиду что-то вроде этого:
https://sampforum.blast.hk/showthread.php?tid=451381
Re: Отсылка жирного HTTP-запрсоа -
ZaR - 05.05.2015
Чо-т жесть какая-то.
Мне нужно отправить жирный запрос -- дамп БД (не спрашивайте, зачем). 200 символов в среднем на запись в БД (с учётом, что все unicode-символы подверглись urlencode'у) -- получается уже 800 байт, то есть чёрт побери 1 килобайт на запись. Записей -- допустим, 5к. 5 мегабайт в оперативной памяти, которая отжирает глобальная переменная -- это жесть.
Re: Отсылка жирного HTTP-запрсоа -
ZiGGi - 05.05.2015
Quote:
Originally Posted by ZaR
Чо-т жесть какая-то.
Мне нужно отправить жирный запрос -- дамп БД (не спрашивайте, зачем). 200 символов в среднем на запись в БД (с учётом, что все unicode-символы подверглись urlencode'у) -- получается уже 800 байт, то есть чёрт побери 1 килобайт на запись. Записей -- допустим, 5к. 5 мегабайт в оперативной памяти, которая отжирает глобальная переменная -- это жесть.
|
Это же одноразовый запрос? Да и разве 5 мегабайт это много? 2015 на дворе.
P.S. Выглядит так, как будто ты хочешь FS'ом утащить базу -_-
Re: Отсылка жирного HTTP-запрсоа -
ZaR - 06.05.2015
Одноразовый-то одноразовый, только если ты делаешь глобальную переменную, нет особой разницы -- будешь ты её 1 раз использовать или 10 -- 5 мегабайт съедены.
2015-то на дворе, но жить и без гарбажколлектора, и без ручного выделения и очистки памяти -- как-то не оч в императивном языке.