Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя
Показано с 21 по 30 из 46
  1. #21
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Тоже стоит понимать, что ради компактности ты жертвуешь процессорным временем :)
    Тут действует принцип "китайского кода": да, код более объёмный, но все вариации прописаны сразу, за счёт чего не происходит лишних обращений к переменным и прочих действий.

    По-хорошему, здесь стоит только от лишней переменной избавится, как это сделал ты
    PHP код:
            case D_REG_SEX: { 
                if(!
    response) return Kick(playerid); 
                switch(
    listitem) { 
                    case 
    0: { 
                        
    pInfo[playerid][Sex] = 1
                        
    pInfo[playerid][Skin] = Random_Skin_Male[random(sizeof(Random_Skin_Male)]; 
                    } 
                    case 
    1: { 
                        
    pInfo[playerid][Sex] = 2
                        
    pInfo[playerid][Skin] = Random_Skin_Female[random(sizeof(Random_Skin_Female)]; 
                    } 
                } 
                
    CreateNewAccount(playerid); 
                return 
    true
            } 
    В остальном код оптимален (нет повторных вызовов ни для listitem, ни для pInfo)
    Лучше мужские и женские скины в одном массиве разместить, тогда switch/case будет не нужен.

  2. #22
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Лучше мужские и женские скины в одном массиве разместить, тогда switch/case будет не нужен.
    Так в любом случае нужно ведь будет определить какой пол выбрал игрок. Это притянет за собой либо дополнительную переменную, либо обращение к pInfo. К этому всему ещё и операции по получению ID пола из listitem.
    Или может я не понял что-то?)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так в любом случае нужно ведь будет определить какой пол выбрал игрок. Это притянет за собой либо дополнительную переменную, либо обращение к pInfo. К этому всему ещё и операции по получению ID пола из listitem.
    Или может я не понял что-то?)
    Я это вижу как-то так:
    PHP код:
            case D_REG_SEX: {
                if(!
    response) return Kick(playerid);
                
    pInfo[playerid][Sex] = listitem 1;
                
    pInfo[playerid][Skin] = Random_Skin[listitem][random(strlen(Random_Skin[listitem])];
                
    CreateNewAccount(playerid);
                return 
    true;
            } 
    Не знаю, быстрее это или нет, но для меня в первую очередь важна читаемость кода, что влечёт за собой уменьшение дублирования кода.
    Ну и такой код более гибок, легче будет добавить новый пол (мало-ли).
    Последний раз редактировалось ziggi; 15.02.2018 в 21:39.

  4. Пользователь сказал cпасибо:
    Desulaid (16.02.2018)
  5. #24
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну значит я правильно понял. Если я правильно представляю принципы, по которым будет обрабатываться сей код, то увы, тут будет больше действий.

    И да, надо было сразу уточнить, что про быстродействие я начал говорить не с той целью, что нужно использовать мой вариант, ибо он быстрее, а пытался объяснить (только забыл предупредить об этом :D) на наглядном примере то, что часто оптимизация одного параметра (в данном случае читаемости) наносит "вред" другому параметру (в данном случае быстродействию). И всегда следует выбирать меньшее зло среди всех.
    В данном случае, например, оптимизация читаемости (вариант Ziggi и Long-) будут вполне приемлемыми, ибо код вызывается не так часто + сама по себе разница по времени между двумя вариантами минимальна.
    Вооот. Ваш кэп
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Не только читаемости, но и масштабируемости)

  7. Пользователь сказал cпасибо:
    DeimoS (16.02.2018)
  8. #26
    Аватар для Snegovik1337
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.01.2018
    Сообщений
    17
    Репутация:
    3 ±

    Тесты на скорость

    // DeimoS
    PHP код:
    for(new 010000i++) 
    1) 6 + 6 + 7 + 7 + 6 / 5 = 6.4 //Snegovik1337
    2) 7 + 6 + 6 + 6 + 5 / 5 = 6 //DeimoS
    3) 8 + 7 + 8 + 7 + 8 / 5 = 7.6 //Long-
    // Snegovik1337
    PHP код:
    for(new 0100000i++) 
    1) 59 + 63 + 59 + 61 + 61 / 5 = 60.6 //Snegovik1337
    2) 60 + 61 + 63 + 68 + 59 / 5 = 62.2 //DeimoS
    3) 71 + 69 + 74 + 71 + 71 / 5 = 71.2 //Long-
    // Snegovik1337
    PHP код:
    for(new 01000000i++) 
    1) 545 + 549 + 548 + 555 + 556 / 5 = 550.6 //Snegovik1337
    2) 598 + 576 + 604 + 555 + 577 / 5 = 582 //DeimoS
    3) 638 + 627 + 626 + 635 + 659 / 5 = 637 //Long-

  9. #27
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от Snegovik1337 Посмотреть сообщение
    // DeimoS
    PHP код:
    for(new 010000i++) 
    // Snegovik1337
    PHP код:
    for(new 0100000i++) 
    // Snegovik1337
    PHP код:
    for(new 01000000i++) 
    Что это? -_-

  10. #28
    Аватар для Snegovik1337
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.01.2018
    Сообщений
    17
    Репутация:
    3 ±
    Написано же, тест на скорость чей вариант быстрее

  11. #29
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А исходный код теста увидеть можно?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. #30
    Аватар для Snegovik1337
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.01.2018
    Сообщений
    17
    Репутация:
    3 ±
    https://pastebin.com/0ups9v9d
    Один из вариантов открываешь, компилируешь и проверяешь результат, потом скрываешь, открываешь другой и так т.д.
    Все сразу не стал сделать, ибо не корректно показывает

 

 
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя

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

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

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

Ваши права

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