Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 11 по 20 из 32
  1. #11
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Первый вариант - недо"решение" неудобства с строками в Павн, нынче тренд среди псевдо-прокодеров этого портала. Позволяет перекидывать свою лень и недостаток знаний элементарной арифметики на компилятор, соответственно несущественно увеличивая время компиляции. Этот вариант позволяет легко определить точную длину форматированной строки компенсируя это утратами глобальной памяти (экономим несколько байтов (если конечно не умеем считать или лень это сделать) в стеке и теряем в несколько раз больше байтов в секции данных = хороший профит ). Многие апологеты этого способа скажут что в отличий от второго варианта, в этом можно очень удобно менять содержимое форматированной строки (то бишь не понадобится заново считать ее максимальную длину) но и этого есть вторая сторона - при появлений нужды изменить/добавить/убрать определенный параметр в этой самой форматированной строки придется опять же в ручную вычитывать длину плейсхолдеров и сложить максимальную длину переменной.
    Второй вариант - не увеличивает время компиляции, не использует секцию данных, неудобный (по мнению некоторых), не принуждает к бесполезному идеализму.
    Последний раз редактировалось ^_^; 13.01.2016 в 00:07.

  2. 2 пользователя(ей) сказали cпасибо:
    DeimoS (14.01.2016) Desulaid (12.01.2016)
  3. #12
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от ^_^ Посмотреть сообщение
    Первый вариант - недо"решение" неудобства с строками в Павн, нынче тренд среди псевдо-прокодеров этого портала. Позволяет перекидывать свою лень и недостаток знаний элементарной арифметики на компилятор, соответственно несущественно увеличивая время компиляции. Этот вариант позволяет легко определить точную длину форматированной строки компенсируя это утратами глобальной памяти (экономим несколько байтов (если конечно не умеем считать или лень это сделать) в стеке и теряем в несколько раз больше байтов в секции данных = хороший профит ). Многие апологеты этого способа скажут что в отличий от второго варианта, в этом можно очень удобно менять содержимое форматированной строки (то бишь не понадобится заново считать ее максимальную длину) но и этого есть вторая сторона - при появлений нужды изменить/добавить/убрать определенный параметр в этой самой форматированной строки придется опять же в ручную вычитывать длину плейсхолдеров и сложить максимальную длину переменной.
    Первый вариант - не увеличивает время компиляции, не использует секцию данных, неудобный (по мнению некоторых), не принуждает к бесполезному идеализму.
    нынче в Pawn полезно кодить в стиле Pascal'я
    > 2016
    > из рассчета символов в строке теряешь наносекунды
    > лучше тогда вообще рандомно ставить, зато процесс компиляции будет "намного быстрей"

    Псевдокодеры они сейчас такие: кря, кря, кря
    Последний раз редактировалось $continue$; 12.01.2016 в 23:02.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #13
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Не понимаю, зачем вы пытаетесь подражать DC.
    Он делает так как ему нравится, так и вы делайте так как нравится вам.

    2й вариант лучше и быстрее
      Открыть/закрыть

    http://imgur.com/burPTx7

    PHP код:
    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        new 
    time GetTickCount();
        for(new 
    050000000x++)
        {
            static const 
    check_str [] = "Проверка %d";
            new 
    new_check [sizeof(check_str)];
            
    format(new_checksizeof(new_check), check_str22);
        }
        
    printf("static const %d",GetTickCount()-time);
        
        new 
    timex GetTickCount();
        for(new 
    050000000x++)
        {
            new 
    new_check [11];
            
    format(new_check,11,"Проверка %d"22);
        }
        
    printf("new %d",GetTickCount()-timex);
        print(
    "----------------------------------\n");


  5. #14
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    нынче в Pawn полезно кодить в стиле Pascal'я
    > 2016
    > из рассчета символов в строке теряешь наносекунды
    > лучше тогда вообще рандомно ставить, зато процесс компиляции будет "намного быстрей"

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

    Псевдопрокодер:
      Открыть/закрыть


    Не псевдопрокодер:
      Открыть/закрыть

  6. #15
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    Не понимаю, зачем вы пытаетесь подражать DC.
    Он делает так как ему нравится, так и вы делайте так как нравится вам.

    2й вариант лучше и быстрее
      Открыть/закрыть

    http://imgur.com/burPTx7

    PHP код:
    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        new 
    time GetTickCount();
        for(new 
    050000000x++)
        {
            static const 
    check_str [] = "Проверка %d";
            new 
    new_check [sizeof(check_str)];
            
    format(new_checksizeof(new_check), check_str22);
        }
        
    printf("static const %d",GetTickCount()-time);
        
        new 
    timex GetTickCount();
        for(new 
    050000000x++)
        {
            new 
    new_check [11];
            
    format(new_check,11,"Проверка %d"22);
        }
        
    printf("new %d",GetTickCount()-timex);
        print(
    "----------------------------------\n");

    Почему подражать? Мне просто лень подсчитывать размер массива, да и судя по твоим тестам разница, лично мне, не на столько и существенное, чтобы о чем-то беспокоится. Хотя, лучше стоит поколдовать с разными длинами строк и воспользоваться профайлером DC.

    Цитата Сообщение от $continue$ Посмотреть сообщение
    нынче в Pawn полезно кодить в стиле Pascal'я
    > 2016
    > из рассчета символов в строке теряешь наносекунды
    > лучше тогда вообще рандомно ставить, зато процесс компиляции будет "намного быстрей"

    Псевдокодеры они сейчас такие: кря, кря, кря
    Эй, часовод! Хоть за свои слова отвечай, а не на других все перекидывай ... (фейк )

    Цитата Сообщение от ^_^ Посмотреть сообщение
    Первый вариант - недо"решение" неудобства с строками в Павн, нынче тренд среди псевдо-прокодеров этого портала. Позволяет перекидывать свою лень и недостаток знаний элементарной арифметики на компилятор, соответственно несущественно увеличивая время компиляции. Этот вариант позволяет легко определить точную длину форматированной строки компенсируя это утратами глобальной памяти (экономим несколько байтов (если конечно не умеем считать или лень это сделать) в стеке и теряем в несколько раз больше байтов в секции данных = хороший профит ). Многие апологеты этого способа скажут что в отличий от второго варианта, в этом можно очень удобно менять содержимое форматированной строки (то бишь не понадобится заново считать ее максимальную длину) но и этого есть вторая сторона - при появлений нужды изменить/добавить/убрать определенный параметр в этой самой форматированной строки придется опять же в ручную вычитывать длину плейсхолдеров и сложить максимальную длину переменной.
    Первый вариант - не увеличивает время компиляции, не использует секцию данных, неудобный (по мнению некоторых), не принуждает к бесполезному идеализму.
    Может вы имели ввиду второй вариант? :) Да и насколько я проконсультирован, то секцию данных будут использовать оба варианта. Неудобство можно немного подправить, апеллируя мат. формулами. Просто изменяя (вычитая или прибавляю) разницу. Но все равно посчитать придется.

  7. #16
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Может вы имели ввиду второй вариант? :) Да и насколько я проконсультирован, то секцию данных будут использовать оба варианта. Неудобство можно немного подправить, апеллируя мат. формулами. Просто изменяя (вычитая или прибавляю) разницу. Но все равно посчитать придется.
    Второй, опечатка.
    PHP код:
    //Объявленные переменные:
    //Первый вариант:
    static const kick_tune [] = "- Кикнут %s тюнингует свое авто собейтом";//Секция данных
    new str_tune [sizeof(kick_tune) + MAX_PLAYER_NAME 2]; //Стек 
    //Второй вариант:
    new ZCMDstr[58]; //Стек 
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Мне просто лень подсчитывать размер массива, да и судя по твоим тестам разница, лично мне, не на столько и существенное, чтобы о чем-то беспокоится.
    Действительно, время выполнения каждого участка кода настолько мало что бессмысленно искать "лучшего" с точки зрения эффективности.

    Так или иначе, несмотря на "удобство" первого варианта, у него, по сравнению с вторым, присутствуют определенные недостатки, соответственно "безусловно" утверждать что он лучше второго - глупо.

  8. Пользователь сказал cпасибо:
    seriu (13.01.2016)
  9. #17
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Почему подражать?
    Да потому, что пока DC не выкладывал уроки с таким кодом, его не кто не юзал, а сейчас все "тру скриптеры" повторяют за ним так же как и ты.
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Мне просто лень подсчитывать размер массива
    google > подсчет символов. ctrl +c > ctrl+v profit.

    Цитата Сообщение от Untonyst Посмотреть сообщение
    да и судя по твоим тестам разница, лично мне, не на столько и существенное, чтобы о чем-то беспокоится.
    Поздравляю.
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Хотя, лучше стоит поколдовать с разными длинами строк
    Тебе не хватило 2х одинаковых?
    Цитата Сообщение от Untonyst Посмотреть сообщение
    и воспользоваться профайлером DC.
    Обойдусь стандартной функцией GetTickCount()

  10. #18
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    google > подсчет символов. ctrl +c > ctrl+v profit.
    Спасибо за столь важное сообщение, может еще видео урок прикрепишь? -_- Это просто такая же удобная фича как и ALS hooks!

    Цитата Сообщение от ^_^ Посмотреть сообщение
    Второй, опечатка.
    PHP код:
    //Объявленные переменные:
    //Первый вариант:
    static const kick_tune [] = "- Кикнут %s тюнингует свое авто собейтом";//Секция данных
    new str_tune [sizeof(kick_tune) + MAX_PLAYER_NAME 2]; //Стек 
    //Второй вариант:
    new ZCMDstr[58]; //Стек 

    PHP код:
    new str[128];
    format(strsizeof(str), "- Кикнут %s тюнингует свое авто собейтом", <хз>); 
    Да, массив str отправится в стек, а "- Кикнут %s тюнингует свое авто собейтом" разве не отправится в секцию данных?

    А так да, но я ставлю на удобство, мне так нравится :)

  11. #19
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Спасибо за столь важное сообщение, может еще видео урок прикрепишь? -_- Это просто такая же удобная фича как и ALS hooks!
    на видос
    http://google.gik-team.com/?q=%D0%BF...BB%D0%BE%D0%B2

    я видел применение ALS hooks от тебя.
    с функцией random

    где можно сделать
    PHP код:
    #define Random(%0,%1) random(%1-%0)+%0 
    ты юзаешь Алс хуки, зачем столько проблем?

    ладно забей, как говорится в своем глазу и бревна не заметишь.

  12. #20
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    на видос
    http://google.gik-team.com/?q=%D0%BF...BB%D0%BE%D0%B2

    я видел применение ALS hooks от тебя.
    с функцией random

    где можно сделать
    PHP код:
    #define Random(%0,%1) random(%1-%0)+%0 
    ты юзаешь Алс хуки, зачем столько проблем?

    ладно забей, как говорится в своем глазу и бревна не заметишь.
    Знаю, не лучший вариант применения хуков ... Они нужны для кое-чего другого, ну да ладно :3

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

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

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

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

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

Ваши права

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