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

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

    Но я бы не назвал это такой уж значительной оптимизацией. При создании локального массива тратится время на выделение места в стеке и заполнение всех ячеек массива нулями (ими в Pawn инициализируются все локальные переменные и массивы). Правда, это время очень мало и его можно не брать в счёт.
    И всё же глобальные переменные нужны, когда есть необходимость использовать хранимые в них значения в нескольких функциях. Иначе переменную логично будет сделать локальной.
    Поэтому отказ от глобальных массивов для format в пользу локальных нельзя назвать оптимизацией, скорее просто логичным шагом.
    Если , например мне нужен массив с 2500 ячейками. Логично его будет сделать глобальным, ведь сразу тогда стек заполнится.Но тогда придется мучатся с очисткой массива каждый раз. Или как вариант сделать этот массив локальным и #pragma dynamic выставить значение, ведь ничего плохого она не делает, лишь увеличивает место. И для инициализации, как вы и сказали, требуется мало времени. Чем не вариант?



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


    Skype
    profan99
    VK
    click




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

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

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

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



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


    Skype
    profan99
    VK
    click




 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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