#pragma dynamic
#1

Объясните пожалуйста что это такое "#pragma dynamic" как и зачем он используется? создаёт ли он нагрузку? объясните по подробнее буде очень благодарен!
Reply
#2

Я точно не знаю за что он отвечает но без него у меня вот что пишет


Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Header size: 14056 bytes
Code size: 2810544 bytes
Data size: 3707484 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 6548468 bytes

я поставил #pragma dynamic 8500

и у меня стало


Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

ставь у себя начиная с #pragma dynamic 5000 и т.д пока не исчезнут варнинги
Reply
#3

Это директива, задающая размер стека. Просто указывает, сколько памяти необходимо выделить под стек.
Reply
#4

Quote:
Originally Posted by Sergey_Walter
View Post
Я точно не знаю за что он отвечает но без него у меня вот что пишет


Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Header size: 14056 bytes
Code size: 2810544 bytes
Data size: 3707484 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 6548468 bytes

я поставил #pragma dynamic 8500

и у меня стало


Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

ставь у себя начиная с #pragma dynamic 5000 и т.д пока не исчезнут варнинги
а из-за чего появляются эти варнинги? оптимизация хромает?
Reply
#5

Может и глупый вопрос, но где вы тут варнинги увидели?
Reply
#6

Вот:
Code:
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 6548468 bytes
Reply
#7

#pragma dynamic - Как было сказано выше, это размер стека. До Конца я сам не разобрался что к чему, но некоторые выяснил на личном опыте:
Если при компиляции выдаёт:
Quote:

Header size: 14056 bytes
Code size: 2810544 bytes
Data size: 3707484 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 6548468 bytes

Значит серверу не будет хватать памяти и он будет висеть периодически. (В моём случае, я слишком много переменных создавал внутри функции).

Стандартное значение это 4096, при увеличении этого размера, сервер будет кушать больше памяти.

Для себя я решил, что это временное решение проблемы, и по мере оптимизации кода, значение буду уменьшать, вплоть до стандартного, хота кто-то сказал: "нет ничего более постоянного, чем временное", так что....
Reply
#8

Quote:
Originally Posted by -Stranger-
View Post
Значит серверу не будет хватать памяти и он будет висеть периодически. (В моём случае, я слишком много переменных создавал внутри функции).
Насколько я знаю, компилятор ссылается на переполнение памяти в коде, то бишь пользователь выделил большее количество ячеек, чем было использовано.

Ну а в целом, dynamic используют для ликвидации переполнения памяти методом регулировки размера стэка.

Решает проблему с переполнением, ускоряет компиляцию, но не ускоряет работу кода. Лишь уменьшает общий вес "на выходе".
Reply
#9

Всем спасибо, значит оптимизация и еще раз оптимизация!
Reply
#10

Quote:

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Header size: 8196 bytes
Code size: 2218316 bytes
Data size: 2245236 bytes
Stack/heap size: 16384 bytes; estimated max. usage=6839 cells (27356 bytes)
Total requirements: 4488132 bytes

В окне компилятора после компилирования пишет это. Что бы это убрать, нужно прописать #pragma dynamic значение usage, перед всеми инклудами. Можно с запасом.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)