Xipxop
Круче варика, только c++!
offline
Опыт:
7,646Активность: |
cJass "cj_antibj_base.j" или подробнее об антиBJ
Читая статью об cjass, я наткнулся на:
» раскрыть include "cj_order.j" include "cj_antibj_base.j" Данные подключаемые файлы предназначены для удобства и небольшой оптимизации карт во время сохранения. Первый из них заменяет все вызовы функций вида OrderId("smart") на соответствующие им целочисленные значения приказов, а также вводит макросы вида order_smart для целочисленных значений всех существующих приказов. Второй же выполняет легкую оптимизацию при использовании в карте функций и констант из файла "Blizzard.j". Используемые константы заменяются на их значения, а многие функции заменяются на свои аналоги из "common.j". Хочу заметить, что эта оптимизация работает даже на ГУИ-триггерах в вашей карте. Возникло пару вопросов: 1) Функция "антиBJ" и вправду оптимизирует все BJ, причем так как надо, без ошибок? 2) Раз, она оптимизирует, все BJ, то тогда скажите зачем, нужны все эти статьи про оптимизации, про "плохой тон BJ функций", зачем если включив это в код, можно убрать все это?! 3) Впихивать это: include "cj_antibj_base.j" надо в нестандартные триггеры в самое начало? |
09.09.2012, 00:52 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
jeffz
offline
Опыт:
104Активность: |
Только что посмотрел, как это работает.
После подключения cj_antibj_base.j в коде карты были найдены следующие изменения:
Не о всём, но суть ясна.
Ответы на вопросы:
Поправьте меня, если где-то ошибаюсь. |
09.09.2012, 03:35 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Как бы от утечек она не спасет. |
09.09.2012, 03:36 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
online
Опыт:
94,553Активность: |
Xipxop, да толку от анти бж мало, так как по сути одна бж заменяется другой, это придел того что делает эта система, а как был сам факт вызова паразитной функции в коде так он и остался, сама архитектура бж, не способствует производительности.... |
09.09.2012, 06:02 | #4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
cj_order круто, остальным не пользуюсь.
|
09.09.2012, 07:05 | #5
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
cj_order оптимизирует приказы, причем очень хорошо.
cj_antibj_base производит незначительную оптимизацию bj функций, можно открыть сам файл и посмотреть, что на что будет заменено. ADOLF добавил:
quq_CCCP профессионально пишет бред по всему jass форуму, его можно не слушать. |
09.09.2012, 09:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
online
Опыт:
94,553Активность: |
ADOLF, ну я посмотрел код после этих преобразований, толку так скажем 0.... Ну и что что мы заменим IsUnitDeadBJ на ей содержимое? Ну а сами условия гуи с 10 функций, как были так и остались, ппц, какой толк от этого? |
09.09.2012, 09:44 | #7
+0/−4
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
quq_CCCP, честно, необязательно отвечать в КАЖДОЙ теме, особенно если ты не знаешь ответа/не разбираешься в теме. По-твоему когда в одной функции вложена другая это ни на что не влияет, а когда в одном условии вложено другое - влияет? |
09.09.2012, 10:13 | #8
+4/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
online
Опыт:
94,553Активность: |
Doc, ну значит ты невидел код после этих приобразований, которые гордо называются анти BJ но на самом деле всего лиш иллюзиия, которая только немножко изменяет BJ архетектуру, но как были утечки и потеря производительности на вызов всякого мусора так они и остались.... |
09.09.2012, 10:16 | #9
+0/−4
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
quq_CCCP, блин, ты тогда хотя-бы пиши "ТРЕД НЕ ЧИТАЛ, ЩАС НАПИШУ ФИГНЮ: %yourpost%"
Все уже давно сказали, что утечки она НЕ УБИРАЕТ и не должна. Она избавляет от потери производительности, убирая вызов мусора. А ты пожалуйста проверь несколько раз, прежде чем говорить. |
09.09.2012, 10:19 | #10
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
online
Опыт:
94,553Активность: |
Doc, ну какой упорный
((код jass
function 001 takes nothing retursn boolean returns GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE) and IsUnitEnemy(GetFilterUnit(),udg_Player001) and IsUnitType(GetFilterUnit(),UNIT_TYPE_MECANICAL) end function тоже самое но гуи, и после вашего оптимизатора... function 001 nothing returns boolean if ( not ( IsUnitEnemy(GetFilterUnit(), udg_TempPlayer)) ) then return false endif if ( not ( GetUnitStateSwap(UNIT_STATE_LIFE, GetFilterUnit()) > 0.00 ) ) then return false endif if ( not ( IsUnitType(GetFilterUnit(),UNIT_TYPE_MECANICAL) ) then return false endif return true endfunction )) Бж заменили их содержимим, да собственно толку то от этого... Я ВИДЕЛ УСЛОВИЯ ИЗ 5 РАЗНЫХ ФУНКИЙ, а их можно заменить 1, в ифах (if,then,else) функции условиями не заменяют, это я все увидел примерно полгода назад уведел скрипт карты после такой оптимизации.. К стати когда нафиг ненужно else его не удаляют... |
09.09.2012, 10:31 | #11
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
quq_CCCP,
|
09.09.2012, 10:36 | #12
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Xipxop
Круче варика, только c++!
offline
Опыт:
7,646Активность: |
Ладно думаю тему закрыть, ответ получен.
Коротко об ответе: Пихать в нестандартный триггер, в самое начало, убирает он только лишний вызов функции ссылающуюся на другую функцию. |
09.09.2012, 13:04 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Можно запихнуть ее куда угодно, это ни на что не влияет. |
09.09.2012, 13:14 | #14
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|