Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±

    Стек,pragma dynamic

    Всем привет.Опять о наболевшем.Как-то в одной теме я спрашивал про стек, а именно:
    Как происходит подсчет стека?Просто была такая ситуация, что локальные массивы убирал вообще, но стек не менялся. Т.е компилятор высчитывает в каком блоке используется самое большое кол-во байт??
    И еще: стек - это на весь мод, или стек - для каждого игрока.Если есть, например, функция и в ней массив(допустим) с 4000 ячейками.И если эта функция вызовется одновременно двумя игроками, то переполнение будет?(4000*4*2 = 32000 байт)
    Мне ответили,но не совсем полностью.

    Также 2 вопрос: чем вредно использование pragma dynamic.ВЕСЬ Рунэт излазил, и никто не задался вопросом: "Почему ее вредно использовать?"Везде просто отвечали: "Фуу,быдлокодер", "Не используй ее", "Убери прагму".А ответы от ТС были такие : "Хорошо,спасибо", "Окей", "Ладно, а как?" и.т.д.
    Кто-то говорил,что стек - это кэш процессора, поэтому ее нельзя делать большой.

    Жду ваших ответов



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    Как происходит подсчет стека?Просто была такая ситуация, что локальные массивы убирал вообще, но стек не менялся. Т.е компилятор высчитывает в каком блоке используется самое большое кол-во байт??
    Именно.


    Цитата Сообщение от Profyan Посмотреть сообщение
    И еще: стек - это на весь мод, или стек - для каждого игрока.Если есть, например, функция и в ней массив(допустим) с 4000 ячейками.И если эта функция вызовется одновременно двумя игроками, то переполнение будет?(4000*4*2 = 32000 байт)
    На этот вопрос вам уже ответили.


    Цитата Сообщение от Profyan Посмотреть сообщение
    Также 2 вопрос: чем вредно использование pragma dynamic.ВЕСЬ Рунэт излазил, и никто не задался вопросом: "Почему ее вредно использовать?"Везде просто отвечали: "Фуу,быдлокодер", "Не используй ее", "Убери прагму".А ответы от ТС были такие : "Хорошо,спасибо", "Окей", "Ладно, а как?" и.т.д.
    Кто-то говорил,что стек - это кэш процессора, поэтому ее нельзя делать большой.

    Жду ваших ответов
    Если вам нужен размер стека больше 16Кб и вы используете #pragma dynamic, значит вы просто ленивый (сюрприз!) быдлокодер, который не может грамотно использовать стек. По-моему, это должно быть очевидно.
    Вместо того, чтобы расширять лимиты, попробуйте уложиться в уже имеющиеся. Избавьтесь от всяких "new string[256]" и рассчитывайте размер массивов, исходя из ситуации, а не под одну кальку. Не используйте несколько переменных (особенно массивов) там, где можно использовать только одну. На этой неделе я постараюсь ещё доделать статью про расчёт размера массивов для форматирования строк.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. Пользователь сказал cпасибо:
    VVWVV (06.01.2016)
  4. #3
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Избавьтесь от всяких "new string[256]" и рассчитывайте размер массивов, исходя из ситуации, а не под одну кальку. Не используйте несколько переменных (особенно массивов) там, где можно использовать только одну. На этой неделе я постараюсь ещё доделать статью про расчёт размера массивов для форматирования строк.
    Получается если есть глобальный string[over9000] и он используется много где, то его надо убрать и сделать в каждом кусочке мода такой только с правильными рассчётами.
    Я так понял?

  5. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Получается если есть глобальный string[over9000] и он используется много где, то его надо убрать и сделать в каждом кусочке мода такой только с правильными рассчётами.
    Я так понял?
    Да. Тот массив, который вы создаёте в отдельном блоке — будет уничтожен, а глобальный будет всегда.

  6. #5
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Именно.



    На этот вопрос вам уже ответили.



    Если вам нужен размер стека больше 16Кб и вы используете #pragma dynamic, значит вы просто ленивый (сюрприз!) быдлокодер, который не может грамотно использовать стек. По-моему, это должно быть очевидно.
    Вместо того, чтобы расширять лимиты, попробуйте уложиться в уже имеющиеся. Избавьтесь от всяких "new string[256]" и рассчитывайте размер массивов, исходя из ситуации, а не под одну кальку. Не используйте несколько переменных (особенно массивов) там, где можно использовать только одну. На этой неделе я постараюсь ещё доделать статью про расчёт размера массивов для форматирования строк.
    Значит ее неиспользование обусловлено только морально-этическими нормами программирования.А в плане работоспособности и производительности она никак не повлияет, если я назначу ей любой размер?!
    На самом деле я бережно обращаюсь с переменными и массивами, просто задался таким вопросом.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  7. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    Значит ее неиспользование обусловлено только морально-этическими нормами программирования.А в плане работоспособности и производительности она никак не повлияет, если я назначу ей любой размер?!
    На самом деле я бережно обращаюсь с переменными и массивами, просто задался таким вопросом.
    На инициализацию ячеек массива нулями тоже уходит время. Правда, этого можно и избежать.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #7
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    На инициализацию ячеек массива нулями тоже уходит время. Правда, этого можно и избежать.
    При чем тут массив?Или стек заполняется 0?



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  9. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    При чем тут массив?Или стек заполняется 0?
    Ячейки массива при его создании заполняются нулями. Ну или участок стека - называй, как хочешь. Без этого в ячейках массива будут мусорные значения, оставшиеся после выполнения других функций.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. Пользователь сказал cпасибо:
    Profyan (07.01.2016)
  11. #9
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ячейки массива при его создании заполняются нулями. Ну или участок стека - называй, как хочешь. Без этого в ячейках массива будут мусорные значения, оставшиеся после выполнения других функций.
    Это реализовано в павн для того,чтобы новички не сталкивались с глупыми ошибками,когда забывали инициализировать переменную.
    И если я правильно понял, то от увеличения стека производительность не упадет.Ведь инициализация нулями ничтожно мала,как вы и сказали.
    Ну тогда на этом все,можно закрывать тему.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  12. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    Ведь инициализация нулями ничтожно мала,как вы и сказали.
    Это из той же оперы, что "зачем вытирать задницу сейчас, если завтра я опять пойду в туалет?". Из-за подобных "да зачем это делать...?" профессионалы и становятся дилетантами. Если можно свести ущерб к минимуму, лучше это сделать, ибо сегодня Вы забили на инициализацию массивов; завтра забили на подсчёт ячеек в массивах; послезавтра забили ещё на что-то, по-вашему мнению, несущественное и через месяц-другой все Ваши "да и так сойдёт!" превратятся в один большой ком проблем, который поставит крест на всём Вашем коде. И придётся Вам потом искать лазейки, которые Вас выведут, опять таки, к инициализации массивов, ячейкам в массивах и прочему, на что Вы решили забить...
    Хотя дело хозяйское... Тема закрыта.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  13. Пользователь сказал cпасибо:
    Profyan (07.01.2016)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •