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

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

    Profiler plugin (профайлер)

    Данный плагин помогает узнать, какие функции в скрипте выполняются дольше всего, благодаря чему можно понять, какие отрывки кода следует оптимизировать в первую очередь.
    Он измеряет количество вызовов и время выполнения каждой функции. Полученная информация сохраняется в одном из поддерживаемых на данный момент форматов: HTML, XML или в виде обычного текста.

    Профилирование начинается при загрузке скрипта и завершается при его выгрузке (т.е., когда вы закрываете сервер или выполняете RCON-команды exit/gmx/unloadfs/reloadfs). Во время выгрузки статистические данные сохраняются в файл <имя_скрипта>-profile.<расширение>. Расширение зависит от выбранного вами формата сохраняемой информации (см. выше).

    Плагину можно указать дополнительные параметры в server.cfg:
    • profile_gamemode <0|1>

      Если указано 1, плагин будет профилировать мод, запускаемый на сервере. Значение по умолчанию: 0.

    • profile_filterscripts <fs1> <fs2>

      Список фильтрскриптов, которые нужно профилировать. Может быть пустым.

    • profile_format <xml|html|text>

      Формат вывода статистики. Значение по умолчанию: html. Примечание: в HTML-документе можно сортировать данные статистики, щёлкая по заголовкам колонок!!


    Скачать:

    Исходный код:


    Примечания:
    • Я не перевёл пункты про параметры call_graph и call_graph_format. В них было сказано о программе GraphViz, ссылка на сайт которой мертва, поэтому у меня не было возможности разобраться.
    • Не забудьте указать "profile_gamemode 1" в server.cfg для профилирования мода, т.к. по умолчанию профилирование почему-то выключено.
      Остальные пункты в принципе указывать не обязательно: при их отсутствии фильтрскрипты профилироваться не будут, а отчёт будет сохраняться в формате HTML в одной папке со скриптом мода.
    • Profiler не совместим с плагинами JIT и CrashDetect. Эти плагины созданы для совершенно разных целей и их использование вместе само по себе абсурдно, поэтому для использования Profiler уберите "jit(.so)" и "crashdetect(.so)" из server.cfg.
    • Профилируются только нативные функции, коллбэки и функции, вызываемые с помощью других нативных функций (SetTimer, SetTimerEx, CallLocalFunction, CallRemoteFunction, etc.)
    • Чтобы вы могли сразу увидеть плагин в действии, прикрепляю скриншот:
        Открыть/закрыть

      Здесь я отсортировал данные, щёлкнув по заголовку столбца "Overall" (под "Total Time").
      Впрочем, если щёлкнуть по стоблцу "%" (тоже под "Total Time"), сортировка не изменится.
      Как видно, больше всего времени отнимает функция OnPlayerUpdate, следовательно код в ней следует переделать.
      На втором месте OnGameModeInit, но её можно пропустить, т.к. загрузка/выгрузка мода не сильно критична по времени.
      Следующие кандидаты на оптимизацию - @__CruiseControlTimer, CheckGas, CheckStatus и SyncUp. Также следует проверить все места, где используется функции GetVehicleModel и GetVehicleVelocity и по возможности убрать лишние вызовы этих функций.


    Оригинал: http://forum.sa-mp.com/showthread.php?t=271129
    Автор: Zeex
    Перевод: Daniel_Cortez


    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось DeimoS; 25.09.2019 в 13:32.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 14 пользователя(ей) сказали cпасибо:
    #enotya (25.02.2018) $continue$ (13.11.2015) Alexander (17.11.2015) Avertus (13.11.2015) Desulaid (13.11.2015) Geebrox (20.07.2016) L0ndl3m (14.11.2015) Profyan (13.11.2015) punkochel (05.11.2020) scory (13.11.2015) Sp1ke (13.11.2015) Unreal (22.11.2015) XakeP (13.11.2015) [ForD] (14.11.2015)
  3. #2
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Кхм..

    There aren’t any uploads for this repository.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Роуди. Посмотреть сообщение
    Кхм..

    There aren’t any uploads for this repository.
    Исправил ссылку. Видимо, оригинал на sa-mp.com долго не обновлялся и за это время Zeex успел переместить загрузки на другую страницу.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. Пользователь сказал cпасибо:
    Роуди. (13.11.2015)
  6. #4
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Что значит?
    PHP код:
    normal    unknown@00000438 

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

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Сообщений
    44
    Репутация:
    0 ±
    А что с инклудом? в мод ничего добавлять не нужно?

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

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Отличный плагин.Только вопрос: как запустить этот мониторинг?
    Нашел в инклуде
    PHP код:
    native Profiler_GetState();
    native Profiler_Start();
    native Profiler_Stop();
    native Profiler_Dump(); 
    Вставил Profiler_Dump(); в OnGameModeInit : отмониторило всего лишь 1 секунду.
    Вставил в ежесекундный таймер: через 30 мин краш сервера, и в столбце Overall на первом месте ежесекундный паблик, на втором native Profiler_Dump .

    Видимо я что-то не так делаю.Подскажите, как правильно установить?



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




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

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Сообщений
    44
    Репутация:
    0 ±
    Цитата Сообщение от Роуди. Посмотреть сообщение
    Что значит?
    PHP код:
    normal    unknown@00000438 
    Cкомплируй мод с -d3

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    1. Я так и не понял как подключить. Добавил инклуд в мод, потом плагин прописал в cfg, и в кфг же прописал:
    PHP код:
    profile_gamemode 1
    profile_format html 
    Запустил сервер -> 5 минут поиграл и оффнул. Нечего не появилось..

    2. Сколько надо времени что бы был запущен сервер?

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

    Статус
    Оффлайн
    Регистрация
    02.01.2014
    Сообщений
    15
    Репутация:
    7 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    1. Я так и не понял как подключить. Добавил инклуд в мод, потом плагин прописал в cfg, и в кфг же прописал:
    PHP код:
    profile_gamemode 1
    profile_format html 
    Запустил сервер -> 5 минут поиграл и оффнул. Нечего не появилось..

    2. Сколько надо времени что бы был запущен сервер?
    Отчет появляется в папке с модом (gamemodes).

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от BossArturKA Посмотреть сообщение
    Отчет появляется в папке с модом (gamemodes).
    Нечего не появилось. Запускал на Windows`e, плагин и инклуд подключил. В server.cfg прописал:
    PHP код:
    profile_gamemode 1
    profile_format html 

 

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

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

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

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

Ваши права

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