Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±

    Скорость компиляции мода

    С недавних пор заметил что мод компилирует очень долго, мод писал я, на протяжении года, очень-очень аккуратно относился к коду. В среднем уходит на компиляцию около 30 сек +-
    Нет сложных вычислений, к переменным и массивам очень аккуратно относился все пересчитывал.

    При компиляции (-d3):
    Header size: 11884 bytes
    Code size: 2717340 bytes
    Data size: 3517172 bytes
    Stack/heap size: 16384 bytes; estimated max. usage=839 cells (3356 bytes)
    Total requirements: 6262780 bytes

    Размер amx: 2.38 МБ
    Размер pwn: Не могу сказать точно так как мод писал модулями.

    Список инклюдов:
    #include <fixes>
    #include <crashdetect>
    #include <streamer>
    #include <dc_cmd>
    #include <sscanf2>
    #include <a_mysql>
    #include <foreach>

    Плагины только те которые необходимы для инклюдов, ну или наоборот).

    Интересует почему так долго идет компиляция. Не пишите что нубо код итд, или железо слабое.
    Последний раз редактировалось vasyok28; 07.07.2016 в 21:42.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Время компиляции напрямую зависит от числа глобальных переменных(массивов), от числа макросов (ибо макросы "раскрываются" именно на одном из этапов компиляции), от общего размера кода и от многого другого.
    Например, вот такой код заставит компилятор подвиснуть
    PHP код:
    new lol;
    switch(
    lol) { case 0..999999999: return 1; } 
    Ибо конструкция "switch/case" раскрывается в серию условий через "if/else if" (только в виде инструкций для amx-машины) так же на этапе компиляции.

    Если строк в моде много, то это логично, что время компиляции увеличилось. Возможно, ты ищешь проблему там, где её нет
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. 2 пользователя(ей) сказали cпасибо:
    De_Lay (09.07.2016) vasyok28 (08.07.2016)
  4. #3
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Время компиляции напрямую зависит от числа глобальных переменных(массивов), от числа макросов (ибо макросы "раскрываются" именно на одном из этапов компиляции), от общего размера кода и от многого другого.
    Например, вот такой код заставит компилятор подвиснуть
    PHP код:
    new lol;
    switch(
    lol) { case 0..999999999: return 1; } 
    Ибо конструкция "switch/case" раскрывается в серию условий через "if/else if" (только в виде инструкций для amx-машины) так же на этапе компиляции.

    Если строк в моде много, то это логично, что время компиляции увеличилось. Возможно, ты ищешь проблему там, где её нет
    Сколько строк в моде не могу сказать точно, иза модулей. Ну примерно приставить можно рп жанр готовность которого 80%
    Насчет переменных массивох, я очень тщательно их объявлял и каждый комментировал и уверил что дело не в них.

    Как вариант может быть что в свитче диалогов кейсы не идут по порядку ?

    Макросов у меня 132.

    Ведь не может мод компилироваться 30 сек. В середнем сколько должно уйти на компиляцию ?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Пожалуй, наиболее вероятная причина: переобъявляете MAX_PLAYERS со своим значением (например 10), а затем это значение повышаете - массивы из MAX_PLAYERS ячеек увеличиваются в размере, а вместе с ними увеличивается и время компиляции.

    Ещё одна причина: раньше использовали модифицированный компилятор от Zeex, а теперь по какой-то причине стали использовать стандартный. Дело в том, что Zeex в своём форке компилятора исправил баг с реаллокацией промежуточного буфера, который в стандартной версии может здорово замедлить процесс компиляции, особенно при использовании макросов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    vasyok28 (08.07.2016)
  7. #5
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Насчет переобъявляете MAX_PLAYERS можно по подробней ? Буду очень-очень благодарен за простенький примерчик.

    А насчет компилятора, с самого начала использовал стандартный.

  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Насчет переобъявляете MAX_PLAYERS можно по подробней ? Буду очень-очень благодарен за простенький примерчик.
    PHP код:
    #undef MAX_PLAYERS
    const MAX_PLAYERS 50
    А потом 50 заменил, например, на 150
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    vasyok28 (08.07.2016)
  10. #7
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    #undef MAX_PLAYERS
    const MAX_PLAYERS 50
    А потом 50 заменил, например, на 150
    Неа, с самого начало работал с 1000 ячеек.

    АПД, ради интереса решил раздефайнить максплеерс и поставить 50, время компиляции не поменялось лишь Data size изменилось
    Последний раз редактировалось vasyok28; 08.07.2016 в 01:05.

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

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

    АПД, ради интереса решил раздефайнить максплеерс и поставить 50, время компиляции не поменялось лишь Data size изменилось
    Оно несущественно изменится.
    Ну тебе уже назвали самые часто встречающиеся причины. Раз мод компилируется долго, значит не всё ты продумал так, как говоришь. Либо пробуй искать причину, либо возьми компилятор от Zeex (а даже если найдёшь причину, всё равно возьми этот вариант компилятора). Другого решения нет
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Компиляция с процом 1.9ггц: 30 сек
    С процов 2.5ггц: 19,26 сек.

    Проблема в желе, закройте тему. Всем спасибо!

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

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение

    Интересует почему так долго идет компиляция. Не пишите что нубо код итд, или железо слабое.
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Компиляция с процом 1.9ггц: 30 сек
    С процов 2.5ггц: 19,26 сек.

    Проблема в желе, закройте тему. Всем спасибо!
    Ок....

 

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

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

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

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

Ваши права

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