Question

f0295655
Шифоньер
#define ShowPlayerInventory(%0)         ShowPlayerDialog(%0, 5300, DIALOG_STYLE_LIST, "тут типа текст", "Выбрать", "Отмена")

или

stock ShowPlayerHouseMenu(playerid)
{
    #define ShowPlayerInventory(%0)         ShowPlayerDialog(%0, 5300, DIALOG_STYLE_LIST, "тут типа текст", "Выбрать", "Отмена")
    return 1;
}

Оно используется одинаково, хотелось бы знать какой вариант будет лучше по оптимизации.

Share this post


Link to post

4 answers to this question

  • 0
DEST
Maintainer

По оптимизации примерно без разницы, если дело именно выиграть спор, то вариант с #define отработает за N ед. времени, вариант с stock отработает за M ед. времени.

В результате M должен быть больше чем N (при прочих равных), т.е. номинально вариант со stock медленнее, на практике без разницы. 

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

@f0295655, может быть Вы имели в виду это?
 

stock ShowPlayerInventory(playerid)
{
    ShowPlayerDialog(playerid, 5300, DIALOG_STYLE_LIST, "тут типа текст", "Выбрать", "Отмена")
    return 1;
}

 

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

Ответ на Ваш вопрос уже дали. Но хотел бы уточнить, что на практике не стоит гнаться за оптимизацией так. Я бы использовал второй вариант. И думаю, что большинство поступит именно так.

  1. Не будет никаких проблем, связанных с тем, что вы используете макрос до того, как объявили его.
  2. При использовании макроса строка "тут типа текст" каждый раз будет подставляться препроцессором в нужные участки кода, а затем помещаться в память (то есть в памяти обнаружится большое количество одинаковых строк). При использовании функции строка лишь единожды попадет в память.
  3. Вызов функции действительно отнимает некоторые доли секунды, но эти доли настолько малы и ничтожны... Вы можете измерить время самостоятельно и убедиться, что время вызова даже миллиона таких функций ничтожно мало.
  4. В функции вы получаете возможность управлять передаваемыми данными (добавлять при необходимости проверки) и результирующими данными (возвращать нужные вам значения, которыми затем оперировать).

Есть диалоговый процессор mdialog. В нем реализована как раз эта идея. Присмотритесь, возможно, Вам это понравится.

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • KodBi
      By KodBi
      Делаю сервер для samp. Тематика: клан сопрано, северный джерси и тд. Никаких краденных модов, делаю оригинальную идею.
       
      Что требуется от Вас? - ничего, просто подкидывать идеи будете
      Зачем Вы мне? - я должен прислушиваться мнения будущих игроков, + интересно
      Что Вы получите? - по базе привилегии ( понимаю никому не нужно ) + высший состав будет получать оплату за инициативу и помощь по проекту.
      Зачем этот сервер нужен? - прозвучит глупо, но ещё осталось много людей, которые хотят играть в самп, ради игры, а не ради постоянной качки бабла. ( те же бывшие фанаты absolute rp, где владелец положил болт на их просьбы о хорошем геймплее и сделал донатную помойку). Я хочу сделать небольшой уголок, где люди могли бы собираться ради захватывающей игры, где качка денег - не основной процесс.
       
      Код, мапинг - всё на мне. Захотите помочь - буду очень рад! релиз сервера затягивать не буду, я сделаю основные функции для интересной игры ( уже имеются npc для сюжета) и добавлю убн (управление по борьбе с наркотиками) + семьи мафиози с мелкими группировками.

      Чтобы зажечь сердца игроков надо в первую очередь сделать это пламя в своем сердце. Давайте создадим хороший проект.
      Мои контакты Telegram - @orekihoutarousan
    • Fosper [BS]
      By Fosper [BS]
      Здравствуйте уважаемы читатели, хочу обьявить набор в команду для разработки CRMP проекта на телефон!
      Нам нужны: 
       
      1) PAWN разработчик
      2) Маппер - человек который будет работать над картой и интерьером
      3) Челоек который раньше занимался разработкой CRMP проекта на телефон
      Пока что нужны данные специалисты в случае чего в этой теме добавлю еще вакансии, 
      РАБОТА НЕ БУДЕТ БЕСПЛАТНОЙ, ПРОДЕЛАННАЯ ВАМИ РАБОТА БУДЕТ ОПЛАЧИАВТЬСЯ
      ВК для связи: @alkhasovvvm
       
      Всем спасибо за внимание, ждем вас