Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> if, &&, || - оптимизация, как быстрее проверки идут?
AliceDiren
сообщение Oct 18 2005, 14:17
Сообщение #1


Level 7
**

Класс: Маг
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [Sn]



LEX: Все началось с этого:

Neverwinter Script Source
int StartingConditional()
{
object oPC = GetPCSpeaker();

if (GetLocalString(oPC, "victorspoken") == "1") return FALSE;

if (GetGender(oPC) != GENDER_FEMALE) return FALSE;

if (GetRacialType(oPC) != RACIAL_TYPE_DWARF) return FALSE;

if (GetRacialType(oPC) != RACIAL_TYPE_GNOME) return FALSE;

if (GetRacialType(oPC) != RACIAL_TYPE_HALFLING) return FALSE;

return TRUE;
}

--------------------------
Быть может так проще?
Neverwinter Script Source
int StartingConditional()
{
object oPC = GetPCSpeaker();
int bResult = FALSE;

if(GetLocalString(oPC, "victorspoken")=="1")
return FALSE;

bResult = (GetRacialType(oPC) = RACIAL_TYPE_DWARF || GetRacialType(oPC) == RACIAL_TYPE_GNOME || GetRacialType(oPC) == RACIAL_TYPE_HALFLING) && (GetGender(oPC) == GENDER_FEMALE);

return bResult;
}


Я просто к тому, что несколько строк, проверяющих условия рассовой принадлежности, стоит объеденить в одну. Гораздо легче читать

Сообщение отредактировал Lex - Oct 18 2005, 15:58
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Misty Dragon
сообщение Oct 25 2005, 19:08
Сообщение #2


Level 4
Иконки Групп

Класс: Маг
Характер: Lawful Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Как раз-таки кэйсы намного тяжелее обрабатываются, нежели простая проверка условия. Намного проще прописывать if() else конструкцию, ибо , в принципе, с этой конструкцией и так все ясно. А вот с как кейсы обрабатываться будут, во много зависит от разработчиков интерпретаторов-компиляторов. Это так же верно и для скриптов, ибо они все равно транслируются в байт-код(в нормальных скриптовых системах :) ). По поводу использования переменных.
Порой лучше пожертвовать некоторым объемом памяти для скорости. Например GetModule(). В общем, непонятно, как и откуда берется хендл, по этому лучше такой вызов вынести отдельно. Например в событие загрузки модуля: PW_oMod = GetModule()(Это касается так же GetPCSpeaker() и подобных функций). А потом уж использовать PW_oMod. Что касается условий переходов, то следует минимизировать вычисления. Даже логические конструкции можно упростить.
И если уж создаете глобальные переменные, то старайтесь их использовать по максимуму ибо у сервера постоянные лики памяти(одна из причин возникновения лагов). Полезно будет также глянуть и растактовку команд процессора. :)

Сообщение отредактировал Misty Dragon - Oct 25 2005, 19:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- AliceDiren   if, &&, || - оптимизация   Oct 18 2005, 14:17
- - Lex   QUOTE (AliceDiren @ Oct 18 2005, 15:17)Быть ...   Oct 18 2005, 14:23
- - AliceDiren   так а там не много-условные, и не вложенные. Я пот...   Oct 18 2005, 14:28
- - Lex   где-то читал или кто-то мне говорил, что операция ...   Oct 18 2005, 14:36
- - Aiwan   Lex давай обсудим этот вопрос со всеми в отдельно...   Oct 18 2005, 15:29
- - dumbo   вскроем правду: имеем два скрипта: 1. несколько ...   Oct 18 2005, 16:27
- - _kaa_   В итоге 1. Если в условии используется функция, о...   Oct 18 2005, 18:54
- - Aiwan   Класс. Давно меня это мучало. Но слишком поздно и ...   Oct 18 2005, 22:32
- - 2_advanced   нужно делать экспорт функций и использовать с++ (...   Oct 18 2005, 22:46
- - Nashman   Если уж речь у вас зашла о языках програмирования,...   Oct 18 2005, 23:27
- - Lex   QUOTE (2_advanced @ Oct 18 2005, 23:46)нужно...   Oct 18 2005, 23:43
- - Friedrich   QUOTE (dumbo @ Oct 18 2005, 16:27)несколько ...   Oct 22 2005, 20:27
- - Misty Dragon   Как раз-таки кэйсы намного тяжелее обрабатываются,...   Oct 25 2005, 19:08
- - dumbo   Misty Dragon, ничего не понял из твоего поста... ...   Oct 26 2005, 12:04


Ответить в эту темуОткрыть новую тему
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 09:12