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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±

    Совет по оптимизации

    Какой из вариантов надежней? Скорость таймера: 50 мс. Работа непостоянная.

    PHP код:
        switch (glog__save[playerid])
        {
            case 
    0..25:
            {
                
    ExperienceBuff[playerid] = (!glog__index{playerid}) ? (++ExperienceBuff[playerid]) : (--ExperienceBuff[playerid]);
                --
    glog__save[playerid];
            }
            case 
    26..110:
            {
                
    ExperienceBuff[playerid] = (!glog__index{playerid}) ? (ExperienceBuff[playerid]+10) : (ExperienceBuff[playerid]-10);
                
    glog__save[playerid] -= 10;
            }
            default:
            {
                
    ExperienceBuff[playerid] = (!glog__index{playerid}) ? (ExperienceBuff[playerid]+100) : (ExperienceBuff[playerid]-100);
                
    glog__save[playerid] -= 100;
            }
        } 
    PHP код:
        new
            
    xp ExperienceBuff[playerid],
            
    index glog__index{playerid},
            
    save glog__save[playerid];

        switch (
    save)
        {
            case 
    0..25:
            {
                
    xp = (!index) ? (++xp) : (--xp);
                --
    save;
            }
            case 
    26..110:
            {
                
    xp = (!index) ? (xp+10) : (xp-10);
                
    save -= 10;
            }
            default:
            {
                
    xp = (!index) ? (xp+100) : (xp-100);
                
    save -= 100;
            }
        }

        
    ExperienceBuff[playerid] = xp,
        
    glog__index{playerid} = index,
        
    glog__save[playerid] = save
    Последний раз редактировалось m1n1vv; 11.08.2017 в 22:52.

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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Второй вариант генерирует достаточно быстрый код, но в таймере он будет немного не к месту, ибо происходит возврат и выделение памяти из стека для переменных, поэтому лучше заменить ключевое слово new на static.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Второй вариант генерирует достаточно быстрый код, но в таймере он будет немного не к месту, ибо происходит возврат и выделение памяти из стека для переменных, поэтому лучше заменить ключевое слово new на static.
    Жаль локальным статикам нельзя приравнивать к значению

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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Жаль локальным статикам нельзя приравнивать к значению
    Лол, что? Вот же:
    PHP код:
        static xpindexsave;
        
    xp ExperienceBuff[playerid],
        
    index glog__index{playerid},
        
    save glog__save[playerid];

        switch (
    save)
        {
            case 
    0..25:
            {
                
    xp = (!index) ? (++xp) : (--xp);
                --
    save;
            }
            case 
    26..110:
            {
                
    xp = (!index) ? (xp+10) : (xp-10);
                
    save -= 10;
            }
            default:
            {
                
    xp = (!index) ? (xp+100) : (xp-100);
                
    save -= 100;
            }
        }

        
    ExperienceBuff[playerid] = xp,
        
    glog__index{playerid} = index,
        
    glog__save[playerid] = save
    Генерация кода будет почти такой же, как и при локальных стековых переменных, но кроме выделения места в стеке.
    Последний раз редактировалось VVWVV; 11.08.2017 в 23:15.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Лол, что? Вот же:
    Забыл дописать при объявлении. Спасибо.

  7. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    static tmp;

    switch (
    glog__save[playerid])
    {
        case 
    0..25:
        {
            
    tmp 1;
        }
        case 
    26..110:
        {
            
    tmp 10;
        }
        default:
        {
            
    tmp 100;
        }
    }

    ExperienceBuff[playerid] += (!glog__index{playerid}) ? (tmp) : (-tmp);
    glog__save[playerid] -= tmp

  8. Пользователь сказал cпасибо:
    m1n1vv (11.08.2017)
 

 

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

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

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

Ваши права

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