Question

#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

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

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

Share this post


Link to post
  • 0

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

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

 

Share this post


Link to post
  • 0

@Jawn Ой, да, перепутал когда писал тему ._.

Share this post


Link to post
  • 0

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

  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

    • Kutuzov
      By Kutuzov
      Всем привет, хотелось бы спросить у тех, кто разбирается в PluginSDK.
      Какие есть источники, руководства, документации о PluginSDK?
      Я пока что ничего нормального не нахожу.
      Заранее спасибо