Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для kushichka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±

    Вопросы по оптимизации

    Хотел узнать мнение понимающих, так вот:

    1. Зачем создаются функции аналоги стандартным? Такие как PlayerToPoint SendMes, SetPPos и прочее. Что лучше использовать, стандартные или вот такие "самопальные"?

    2. Знаю что использование pragma dynamic не есть хорошо, ее ставят когда идет нехватка памяти, то есть переполнение стека. Если я прав, то тогда вопрос: как сделать так что бы убрать прагму? Как понять что где можно оптимизировать? Думаю что изменения размера string'а по всему моду на рациональные не даст уж такого большого прироста к оптимизации, но я особо и не знаю других методов. Говорят уменьшать MAX_PLAYERS, каким образом? Если его сделали значит оно нужно же?

    3. Таймеры. Будет ли это нагрузкой если я создам таймер, допустим, в определенной команде, который будет работать только когда команду вызовут и только на того кто вызовет?

    4. Зачем используют глобальный string, а потом некоторых местах создают локальные? Лучше иметь один глобальный string или постоянно локальные создавать?


    *надеюсь хоть на что-то получить ответ

  2. #2
    Аватар для Mazzilla
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2013
    Адрес
    Нижневартовск
    Сообщений
    256
    Репутация:
    63 ±
    Цитата Сообщение от kushichka Посмотреть сообщение
    Хотел узнать мнение понимающих, так вот:

    1. Зачем создаются функции аналоги стандартным? Такие как PlayerToPoint SendMes, SetPPos и прочее. Что лучше использовать, стандартные или вот такие "самопальные"?

    2. Знаю что использование pragma dynamic не есть хорошо, ее ставят когда идет нехватка памяти, то есть переполнение стека. Если я прав, то тогда вопрос: как сделать так что бы убрать прагму? Как понять что где можно оптимизировать? Думаю что изменения размера string'а по всему моду на рациональные не даст уж такого большого прироста к оптимизации, но я особо и не знаю других методов. Говорят уменьшать MAX_PLAYERS, каким образом? Если его сделали значит оно нужно же?

    3. Таймеры. Будет ли это нагрузкой если я создам таймер, допустим, в определенной команде, который будет работать только когда команду вызовут и только на того кто вызовет?

    4. Зачем используют глобальный string, а потом некоторых местах создают локальные? Лучше иметь один глобальный string или постоянно локальные создавать?


    *надеюсь хоть на что-то получить ответ
    1. Автор мода таким способом ускоряет написание некоторых функций. Добавляют в сток дополнительные действия, которые используются после стандартных функций, и так далее.
    2. Оптимизируйте массивы - некоторые используют только часть созданного массива. Оптимизируйте циклы - некоторые создают циклы, которые не нужны, либо после определенного действия не обрывают цикл. MAX_PLAYERS можно уменьшить таким способом:
    вставляем в начало мода
    PHP код:
    #undef MAX_PLAYERS
    const MAX_PLAYERS 100
    Тем самым MAX_PLAYERS будет равно не 500, а 100 - значительная разгрузка некоторых циклов?
    3. Сам таймер не несёт за собой особой нагрузки, нагружают действия, используемые в таймере, особенно при неправильном использовании функций.
    4. Лучше создавать локальные с точно посчитанным размером.

  3. #3
    Аватар для kaZax
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.01.2015
    Адрес
    Kazakhstan
    Сообщений
    22
    Репутация:
    3 ±
    1. Скорее всего свой функций пишутся для удобства кто пишет код. Например при телепортаций вы устанавливаете позицию, интерьер, вирт.мир. Для того чтобы каждый раз не писать 3 строк кода создаются свой функций:
    PHP код:
    На примере макроса:
    #define SetPlayerPosEx(%0,%1,%2,%3,%4,%5) \
        
    SetPlayerPos(%0,%1,%2,%3), SetPlayerInterior(%0,%4), SetPlayerVirtualWorld(%0,%5
    4. Глобальные переменные создают только в тех случаях когда нужно записывать/использовать переменную во всех частях кода.
    Локальные создаются тогда когда он нужен вам внутри функций/каллбека.

 

 

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

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

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

Ваши права

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