Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 3 из 3

Тема: Static

  1. #1
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    116
    Репутация:
    4 ±

    Static

    Всем привет.

    Сейчас у меня появился такой вопрос, когда читал тему
    и заметил

    PHP код:
    public OnPlayerUpdateplayerid )
    {
        static 
    // Я использую здесь статистические переменные, ибо они не будут вызываться каждый раз 
            
    s_Keys,
            
    s_UpDown,
            
    s_LeftRight
        

    PHP код:
    static // Я использую здесь статистические переменные, ибо они не будут вызываться каждый раз 
    я так понял что можно в сек. таймере вместо
    PHP код:
    new string[128]; 
    будет лучше использовать (?)
    PHP код:
    static string[128]; 
    Спасибо.
    Pro-pawn.ru

  2. #2
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Static не будет очищатся при каждой итерации вроде

  3. #3
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,666
    Репутация:
    2145 ±
    static в первом примере используется для того, чтобы снизить требования к памяти: для создания и уничтожения локальной переменной с помощью new уходит 2 инструкции: push <начальное значение> (эта инструкция занимаеи в памяти 8 байт) и stack 4 (ещё 8 байт), а со static переменная не создаётся в стеке, а всё время находится в секции данных и занимает 4 байта, при этом её нельзя ни создать, ни уничтожить, как в стеке. В итоге имеем 16 байт с new и 4 со static - отсюда и экономия.

    Что касается массивов, то с new на их создание и уничтожение тратится от 40 до 44 байт (инструкции варьируются в разных случаях), поэтому выгода будет только в том случае, когда размер массива меньше 10 (40/4) ячеек. Правда, при создании массива с помощью new также будет затрачено время на инициализацию его ячеек изначальными значениями, но это время крайне мало и им можно пренебречь.

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


    Tl;dr: Если вы не разбираетесь во всём вышеописанном, лучше не используйте static.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  4. 3 пользователя(ей) сказали cпасибо:
    gangzone.ini (22.10.2015)Geebrox (22.10.2015)Unreal (22.10.2015)
 

 

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

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

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

Ваши права

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