[JASS] Альтернативный урок 3. Функции
|
|
BlackFoxi | Дата: Среда, 10 Апреля 2013, 17:55:23 | Сообщение # 26 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Цитата (Duosora) Быдлокодинг Конструкция Код if IsUnitType(uAz,UNIT_TYPE_DEAD) then else set lCz = lCz endif выполняется на 6,25% быстрее чем, предложенное Дуосом Код if not IsUnitType(uAz,UNIT_TYPE_DEAD) then set lCz = lCz endif А теперь, врун Дуосора, обосрись, обмажься и распадись на атомы. Это не быдлокодинг, а оптимизация по скорости. Ты ни черта не знаешь о программировании, поэтому я запрещаю тебе использовать жаргонизмы.Добавлено (10 Апреля 2013, 17:55:23) --------------------------------------------- Что такое быдлокодинг?
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 17:56:48 | Сообщение # 27 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| BlackFoxi, а можно пояснение почему? Уж очень интересно.
|
|
|
|
BlackFoxi | Дата: Среда, 10 Апреля 2013, 18:09:00 | Сообщение # 28 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Что почему? Добавлено (10 Апреля 2013, 18:09:00) --------------------------------------------- Использовалось: Код globals integer lCz=0 endglobals function IntToStrz takes integer icz returns string local string sAz = "" local integer lAz = icz local integer lBz = 0 if lAz == 0 then return "0" endif if lAz < 0 then set sAz = "(-)" set lAz = - lAz endif loop exitwhen lAz == 0 set lBz = lAz set lAz = lAz / 10 set lBz = lBz - 10*lAz if lBz < 6 then if lBz == 0 then set sAz = "0" + sAz elseif lBz == 1 then set sAz = "1" + sAz elseif lBz == 2 then set sAz = "2" + sAz elseif lBz == 3 then set sAz = "3" + sAz elseif lBz == 4 then set sAz = "4" + sAz elseif lBz == 5 then set sAz = "5" + sAz endif else if lBz == 6 then set sAz = "6" + sAz elseif lBz == 7 then set sAz = "7" + sAz elseif lBz == 8 then set sAz = "8" + sAz elseif lBz == 9 then set sAz = "9" + sAz endif endif endloop return sAz endfunction function fn1 takes nothing returns nothing local unit uAz set uAz = CreateUnit(Player(0),'hsor',.0,.0,.0) loop if not IsUnitType(uAz,UNIT_TYPE_DEAD) then set lCz = lCz endif set lCz = lCz+1 endloop endfunction function main takes nothing returns nothing local integer lAz = 0 call StartThread(function fn1) loop call DisplayTimedTextToPlayer(Player(0),0,0,20,IntToStrz(lAz)+"="+IntToStrz(lCz)) set lAz = lAz+1 call Sleep(1) endloop endfunction Этот код написан как попало.
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 19:03:06 | Сообщение # 29 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| BlackFoxi, почему else быстрее, чем not?
|
|
|
|
SirNikolas | Дата: Среда, 10 Апреля 2013, 19:17:21 | Сообщение # 30 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Если я правильно все понимаю, для осмысления этого придется опуститься до уровня байт-кода. В варианте Дуоса интерпретатор вынужден вычислить not - и только потом проверить получившееся значение. В варианте Алисы будет просто вставлен jnz. Именно на этой лишней операции и экономится 6.25%.
Но все это лишь домыслы, никто, кроме Близзов, доподлинно не знает, как устроен их интерпретатор. Мы можем лишь гадать.
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 19:25:53 | Сообщение # 31 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Можно у Альфа спросить, в принципе. Он же раскладывал game.dll
|
|
|
|
BlackFoxi | Дата: Среда, 10 Апреля 2013, 19:44:33 | Сообщение # 32 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Потому что на то была воля божья. Все зависело даже от угла поворота бутылки пива на столе разраба. Какая тебе на хрен разница? Что-то одно всегда выполняется быстрее, или оба варианта выполняются за одинаковое время, или с переменным успехом. Даже глядя на исходники интерпретатора не все можно предсказать. Все трассируют, тестят, отлаживают.
Движок вара не гениален, устарел - потому не стоит дизассемблирования. Указать, где обрабатывается if then else я не могу.
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 19:58:29 | Сообщение # 33 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Как грубо. Интерес - вещь такая.
|
|
|
|
BlackFoxi | Дата: Среда, 10 Апреля 2013, 20:34:25 | Сообщение # 34 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Да пошел твой интерес - открывай да крякай. Да провались этот топан, попавший в Гугл. На следующей xss непременно удалю. Мне нужно было поглумиться над Дуосом, корпевшим над такой простой темой несколько дней. Я отпостило урок, как он примерно должен бы был выглядеть, но написанный за час. Тема простая - формулировки почти единственные. У Дуоса боль и выбор: постить свое, похуже; свиснуть из моего/чьего-то. Правильный выбор не очевиден: отредактировать мое, поправив грамматику. А давать урок, учить тому, что в рунете изжевано не предполагалось. У меня просто сообщение было.Добавлено (10 Апреля 2013, 20:34:25) --------------------------------------------- Еще раз. Кто такие быдлокодеры?
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 20:39:03 | Сообщение # 35 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Хе, ну если нет ответа - можно об этом спокойно сказать. А то прям аж загорелась.
|
|
|
|
Капитан_Очевидность | Дата: Среда, 10 Апреля 2013, 20:57:34 | Сообщение # 36 |
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
| Цитата (BlackFoxi) Указать, где обрабатывается if then else я не могу
|
|
|
|
Ty3uK | Дата: Среда, 10 Апреля 2013, 21:25:17 | Сообщение # 37 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ну и все, мне достаточно рассуждений Коли. Я ведь не хотел конкретного ответа, который получить сложно и муторно. И вообще, спасибо за новую информацию.
|
|
|
|
Kop4ik | Дата: Четверг, 11 Апреля 2013, 01:51:29 | Сообщение # 38 |
1 уровень
Группа: Пользователи
Сообщений: 7
Награды: 0
Репутация: 0
Блокировки:
| Alice, продолжайте в том же духе, мне очень интересно ваше суждение. Можно подробнее?) Очень уж интересно.
Сасайте лалки.
|
|
|
|
Duosora | Дата: Четверг, 11 Апреля 2013, 16:31:57 | Сообщение # 39 |
The cats never sleep...
Группа: Ветераны
Сообщений: 6734
Награды: 10
Репутация: 2161
Блокировки:
| Цитата (BlackFoxi) А теперь, врун Дуосора, обосрись, обмажься и распадись на атомы. Это не быдлокодинг, а оптимизация по скорости. Ты ни черта не знаешь о программировании, поэтому я запрещаю тебе использовать жаргонизмы. Оу, грамотейка, докажи, что он выполняется быстрее. Иначе будешь врушей.
Не зли других и сам не злись. Мы - гости в этом мире. И если что не так - смирись, Будь поумнее - улыбнись, Ведь в мире всё закономерно. Зло, излучённое тобой, К тебе вернётся непременно.
Сообщение отредактировал Duosora - Четверг, 11 Апреля 2013, 16:32:09 |
|
|
|
BlackFoxi | Дата: Четверг, 11 Апреля 2013, 16:37:43 | Сообщение # 40 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Сообщение #28
|
|
|
|
SirNikolas | Дата: Четверг, 11 Апреля 2013, 18:24:39 | Сообщение # 41 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (BlackFoxi) Еще раз. Кто такие быдлокодеры? Давай не будем начинать бессмысленные споры.
|
|
|
|
BlackFoxi | Дата: Четверг, 11 Апреля 2013, 20:00:37 | Сообщение # 42 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| А не то что? Уже все, что могло быть, было.
|
|
|
|
Kop4ik | Дата: Пятница, 12 Апреля 2013, 01:00:59 | Сообщение # 43 |
1 уровень
Группа: Пользователи
Сообщений: 7
Награды: 0
Репутация: 0
Блокировки:
| BlackFoxi, могут ли быть некоторые недостатки в оптимизации? Будьте любезны, ответьте на этот вопрос, мисс Alice.
Сасайте лалки.
|
|
|
|
[Muzaf]Vostanovlenie | Дата: Пятница, 12 Апреля 2013, 14:45:46 | Сообщение # 44 |
1 уровень
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 38
Блокировки:
| Цитата (Kop4ik) могут ли быть некоторые недостатки в оптимизации? Дам ответ за лису. Не могут. Что за глупый вопрос?
Судари, меня взломали. За что? Я это заслужил? :(
|
|
|
|
Волчачка | Дата: Пятница, 12 Апреля 2013, 19:54:26 | Сообщение # 45 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| BlackFoxi, Тогда такой вопрос. Где лучше будет применить условный оператор "not"?
Сообщение отредактировал Волчачка - Пятница, 12 Апреля 2013, 20:21:32 |
|
|
|
SirNikolas | Дата: Пятница, 12 Апреля 2013, 20:13:08 | Сообщение # 46 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (BlackFoxi) А не то что? Ничего. Просто в этом нет логики. Мы все знаем, что ты сможешь доказать свою точку зрения, так зачем тратить время на такие споры?
|
|
|
|
BlackFoxi | Дата: Пятница, 12 Апреля 2013, 20:45:57 | Сообщение # 47 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Чтобы растянуть удовольствие. Быдлокодер - оскорбление, не литературное, не словарное, не допустимо в профессиональном кругу, буквально: программист, слепо следующий чужим инструкциям. Ответ не требуется.
|
|
|
|
Ty3uK | Дата: Пятница, 12 Апреля 2013, 21:01:47 | Сообщение # 48 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Верно. Быдлокодер != говнокодер.
|
|
|
|
BlackFoxi | Дата: Пятница, 12 Апреля 2013, 22:27:24 | Сообщение # 49 |
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
| Цитата (SirNikolas) придется опуститься до уровня байт-код Код JASS должен абсолютно одинаково выполняться на любом железе, поэтому любая операция имеет фиксированное время выполнения, кратное 3,3333333 микросек. Некоторые значения. loop + endloop 3,3333333 мкс exitwhen 6,66666666 мкс if then else(независимо от наличия else, выбранной ветки и команд в ветках) 10 мкс elseif эквивалентно else if set var = 6,666666 мкс + - * / == < > != 13,333333 мкс and or 10 мкс not 3,333333 мкс Значения выбраны разрабом наугад.
|
|
|
|
Волчачка | Дата: Суббота, 13 Апреля 2013, 13:28:36 | Сообщение # 50 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата (BlackFoxi) Значения выбраны разрабом наугад. Очень интересно.
Не удивительно, что движок вара сделан, как попало. Я в другом смысле. ^Это не в счет, продолжайте.Добавлено (13 Апреля 2013, 13:28:36) ---------------------------------------------
Цитата (dredsss) function postKinga takes real rX, real rY returns integer postKinga - с чего такая ассоциация?
|
|
|
|