Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 22 ПерваяПервая 1 2 3 4 5 13 ... ПоследняяПоследняя
Показано с 21 по 30 из 216
  1. #21
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Вышел новый релиз 3.10.3.

    Изменения:
    • Добавлен новый оператор emit/__emit.
      С описанием работы данного оператора можно ознакомиться здесь.
      (Примечание (DC): В скором времени будет подготовлена русскоязычная статья по использованию оператора emit, я добавлю ссылку сюда по мере готовности.)

    • Ускорена компиляция больших массивов, все элементы которых инициализированы одним и тем же значением.
      Теперь в ассемблерном листинге подобные массивы записываются как "dumpn <кол-во> <значение>".

    • Теперь при возврате массивов неизвестного размера компилятор выдаёт ошибку.
      Пример:
        Открыть/закрыть

      PHP код:
      #include <a_samp>

      GetGenderName(gender_id)
      {
          static const 
      gender_names[3][] = { {"male"}, {"female"}, {"undefined"} };
          if (
      == gender_id)
              return 
      gender_names[0];
          if (
      == gender_id)
              return 
      gender_names[1];
          return 
      gender_names[2];
      }

      main()
      {
          for (new 
      03; ++i)
              
      printf("#%d: %s"iGetGenderName(i)); // error 092: functions may not return arrays of unknown size (symbol "GetGenderName")


      Здесь компилятор выдаёт ошибку из-за того, что не знает размер последнего измерения массива gender_names. Чтобы устранить ошибку, достаточно лишь указать размер последнего измерения массива:
      Код:
      static const gender_names[3][10] = { {"male"}, {"female"}, {"undefined"} };
    • Устранён баг с ложным предупреждением о присвоении переменной значения из самой себя.
      Данный баг возникал при использовании операторов "-" (в унарном варианте), "!" и "~".
      PHP код:
      enum e_Data{
          
      val1val2val3
      };
      new 
      data[e_Info];

      // warning 226: a variable is assigned to itself (symbol "data")
      data[val1] = -data[val1];
      data[val2] = ~data[val2];
      data[val3] = !data[val3]; 
    • Исправлены ошибки, связанные с инициализацией многомерных массивов.

    • Устранён краш при использовании #emit sysreq.c на не использовавшихся ранее в коде нативных функциях.
      (Примечание (DC): Да, опять.)

    • Исправлена ошибка, из-за которой в документацию (*.xml) для автоматонов вместо имён состояний попадали мусорные данные.

    • Устранён баг, из-за которого константы, указанные в аргументах командной строки, не имели никакого эффекта.

    • Устранён баг, связанный с поааданием лишних пустых строк и символов '\a' в листинг препроцессора при использовании директив #pragma deprecated и #warning.

    • Устранено попадание лишних пустых строк в ассемблерный листинг.

    • Исправлены ошибки, возникавшие при сборке для ОС Android.


    Скачать: https://github.com/Zeex/pawn/releases/tag/v3.10.3

    Параллельно подготовлен тестовый выпуск, в котором, помимо всего вышеперечисленного, внесён ряд изменений для улучшения производительности.
    (Примечение (DC): Особенно заметно уменьшение времени компиляции на крупных модах. Например, при компиляции мода Open-GTO на моём ПК время сборки уменьшилось с 18 до 6 секунд.)
    https://github.com/Zeex/pawn/release....3-performance
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 3 пользователя(ей) сказали cпасибо:
    DeimoS (25.10.2017) SooBad (29.10.2017) Web (28.10.2017)
  3. #22
    Аватар для ziggi
    Проверенный

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

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Супер релиз, спасибо за участие в оптимизации скорости.
    Да я там почти ничего не сделал, разве что немного подправил код maddinat0r'а и оптимизировал использование константы __line (последнее изначально реализовал justnonamenoname).
    Другое дело вот этот патч для ещё более эффективной записи массивов с одинаковыми значениями (при сборке Open-GTO время компиляции слегка уменьшилось - с 16 до 14,5 секунд на моей машине), но я сомневаюсь, что его примут на фоне того, что сделал maddinat0r.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. #24
    Аватар для DeimoS
    Модератор?

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Мод, который компилировался за минуту с лишним, стал компилироваться за 7 секунд. Что вы там сделали такого?
    1) Хеш-таблицы.
    2) Немного других изменений.

    Вроде бы все.
    Последний раз редактировалось VVWVV; 25.10.2017 в 18:14.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Мод, который компилировался за минуту с лишним, стал компилироваться за 7 секунд. Что вы там сделали такого?
    Львиная доля повышения производительности приходится на хранение всех глобальных идентификаторов (глобальных переменных, констант, функций) в хеш-таблице, благодаря чему для поиска того или иного идентификатора по имени не нужно просматривать весь список глобальных идентификаторов, как раньше.
    Правда, цена этому - использование 128 Мб оперативы, потому что maddinat0r зачем-то посчитал нужным резервировать в хеш-таблице целых 8 миллионов слотов (хотя на самом деле их там резервируется 16 млн.), в то время как даже для самых крупных модов может хватить до 16 тысяч слотов (например, для того же Open-GTO хватило всего 4 тысяч), а даже если не хватит, таблица сама может автоматически увеличить свой размер.
    Ещё немного скорость увеличилась за счёт того, что компилятор больше не выискивает встроенную константу __line в таблицах сначала локальных, а затем и глобальных идентификаторов каждый раз, когда нужно изменить её значение (а оно должно изменяться с каждой новой строкой кода). Изначально это было сделано ещё в форке justnonamenoname (также известном как "the fast russian compiler").

    На самом деле, можно выжать ещё немного скорости. Не сделай maddinat0r свой Pull Request так рано, я мог бы попробовать портировать ещё пару-тройку оптимизаций из форка justnonamenoname, но теперь их уже вряд ли примут по отдельности.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Львиная доля повышения производительности приходится на хранение всех глобальных идентификаторов (глобальных переменных, констант, функций) в хеш-таблице, благодаря чему для поиска того или иного идентификатора по имени не нужно просматривать весь список глобальных идентификаторов, как раньше.
    Правда, цена этому - использование 128 Мб оперативы, потому что maddinat0r зачем-то посчитал нужным резервировать в хеш-таблице целых 8 миллионов слотов (хотя на самом деле их там резервируется 16 млн.), в то время как даже для самых крупных модов может хватить до 16 тысяч слотов (например, для того же Open-GTO хватило всего 4 тысяч), а даже если не хватит, таблица сама может автоматически увеличить свой размер.
    Ещё немного скорость увеличилась за счёт того, что компилятор больше не выискивает встроенную константу __line в таблицах сначала локальных, а затем и глобальных идентификаторов каждый раз, когда нужно изменить её значение (а оно должно изменяться с каждой новой строкой кода). Изначально это было сделано ещё в форке justnonamenoname (также известном как "the fast russian compiler").

    На самом деле, можно выжать ещё немного скорости. Не сделай maddinat0r свой Pull Request так рано, я мог бы попробовать портировать ещё пару-тройку оптимизаций из форка justnonamenoname, но теперь их уже вряд ли примут по отдельности.
    Другие оптимизации можно же после слияния этого PR добавить.

    Для интереса попросил Eakwarp'а протестировать со своим Valakas. На сколько мне известно, размеры его amx уходят за 100 Мб.

  9. #28
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Нашёл баг в тестовой версии. При "скреплении" строк через "\" все пробелы между двумя строками исчезают.
    То бишь:
    PHP код:
    print("test  \
        test"
    ); 
    После компиляции пробелы перед "\" исчезнут и в консоль выдаст "testtest", а не "test test".
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Нашёл баг в тестовой версии. При "скреплении" строк через "\" все пробелы между двумя строками исчезают.
    То бишь:
    PHP код:
    print("test  \
        test"
    ); 
    После компиляции пробелы перед "\" исчезнут и в консоль выдаст "testtest", а не "test test".
    Об этом баге уже сообщили. Остаётся надеяться, что исправят быстро и не придётся опять полгода ждать нового релиза.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Ничего себе, реально быстро компилит, раньше компилировал за 1:52 сек щас за 14 сек.

 

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

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

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

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

Метки этой темы

Ваши права

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