XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
kvaDrug

offline
Опыт: 1,601
Активность:
UCV - алтернатива SCV

Все знают SCV и ее недостатки.
Я обратил внимание на систему custom value(user data) - стандартная функция джаза.
Позволяет присаивать юниту целое число. Только одно. Но в 1 целое число можно зашифровать несколько других: a, b, c, d, e, f, g, h итд. Математически это выглядет вот так: 2^a*3^b*5^c*7^d*11^e ну и тд. Алгоритм расшифровки несложен, как и алгоритм получения простых чисел. У этой системы есть ограничение - максимальный размер целого числа(который мне неизвестен).
Вывод: Для записи небольших чисел лучше использовать систему UltraCustomValue, которую я изложил выше.
Вывод не вполне обоснован, поэтому нужны комменты.
Старый 12.08.2008, 17:31
Лось

offline
Опыт: 7,223
Активность:
Ну если бы была у таймера/триггера юзер дата, тогда можно.
А так получаются те же проблемы что и кэшом...
Старый 12.08.2008, 18:09
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Тип интеджер - число с разрядностью 32 бита, может принимать значения от [ -(2^31) .. (2^31)-1 ]
Дополнительную информацию про тип читай в статье Адольфа - http://xgm.guru/articles.php?section=wc3&name=about_int

Идея проста как шпингалет. В программировании побитовый сдвиг для "упаковывания" нескольких чисел в одно уже давно используется.
Пример - в заголовке TGA файла байт #17 хранит в себе 4 параметра.

Касаемо джасса:
1. Либо нужно использовать одинаковый размер для областей хранения - тогда это будет малоэффективно.
2. Либо использовать размер блока, в который умешается число, плюс единица. Но встает вопрос о том, как затем извлечь необходимые данные без использования лишних средств.

Ну и к тому же родной Custom Value есть только у юнита и предмета, с остальными типами нужно писать дополнительные размещающие функции.
Старый 12.08.2008, 18:10
NETRAT

offline
Опыт: 83,712
Активность:
простые числа годятся только для хеширования (необратимых преобразований)
в жассе нет битовых сдвигов => любая попытка сжатия данных иррациональна и неэффективна
в случае когда нам нужно привязать к юниту несколько значений, мы используем кеш
Старый 12.08.2008, 18:53
kvaDrug

offline
Опыт: 1,601
Активность:
ShadoW DaemoN Число параметров может быть любым. Расшифровываем (делением) сначала степень 2 потом 3 а в какой-то момент число-код станет делиться только на 1. Значит параметров больше нет.
Цитата:
Идея проста как шпингалет.

Шпингалет даже сложнее.

NETRAT, я пытаюсь обойти кеш. Решаю проблему очень родственную вот этой теме.
Мне нужно передавать в функцию 14 параметров, с малым периодом. Конечно, про кеш я знаю, но всетаки ищу другой способ.
Старый 12.08.2008, 22:37
J
expert
offline
Опыт: 48,447
Активность:
kvaDrug ты можеш передать таким образом только 32 бита, в джазе вытаскивание бита из числа весьма затратачная операция по сравнению например с Си
да и передавать информацию можно только юнитам и предметам, так какой смысл?
Старый 12.08.2008, 23:30
ScorpioT1000
Работаем
offline
Опыт: отключен
Имхо структуры онли)
Старый 12.08.2008, 23:35
Radiant
Silence
offline
Опыт: 4,907
Активность:
Зачем было устраивать акцию протеста системе DimonT-а? Как будто во всех грехах кэша виновато сцв =) Как уже сказано было, информацию можно передать только юниту и предмету(очень кстати жаль), такчто смысла практически нет...
Старый 13.08.2008, 09:56
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
Это ИМХО самый извращеный способ присваивать юниту какой либо параметр. К тому же вся эта система будет работать даже медленнее чем SCV.

PlayerDark добавил:
для передачи большого кол - ва параметров упаковывайте их все в строку.
Старый 13.08.2008, 10:46
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
жассе нет битовых сдвигов => любая попытка сжатия данных иррациональна и неэффективна

умножение / делением

http://xgm.guru/articles.php?section=wc3&name=about_int

вообще я писал тут как это все можно использовать, и примерно где это может быть рациональней

Цитата:
в случае когда нам нужно привязать к юниту несколько значений, мы используем кеш


кешь зло, баги возможны при записывание чего либо именно на хендл юнита

записать в юзер дату структуру? и в нее юнита и все будет ок (ну если сделать норм отчистку)
Старый 13.08.2008, 10:50
kvaDrug

offline
Опыт: 1,601
Активность:
Цитата:
Зачем было устраивать акцию протеста системе DimonT-а?

Не знал, что это система DimonT-а, думал просто такая-себе самостоятельная система, и это не акция протеста.
Цитата:
К тому же вся эта система будет работать даже медленнее чем SCV.

Не вкоем случае. 100% быстрее. И главное беззатупно, что собственно я ищу.
Старый 13.08.2008, 12:15
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF умножение/деление на порядок отличается от битовых сдвигов, отсюда и иррациональность

извращения подобного рода хуже чем кеш
Старый 13.08.2008, 13:15
J
expert
offline
Опыт: 48,447
Активность:
ADOLF, для сравнения: в си битовый здвиг быстрее операции сложения
Старый 13.08.2008, 14:21
kvaDrug

offline
Опыт: 1,601
Активность:
Все понятно. Кешу это не альтернатива. Теперь я больше знаю о джазе) (планирую изучить полностью до субботы)
Старый 13.08.2008, 16:24
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
ADOLF умножение/деление на порядок отличается от битовых сдвигов, отсюда и иррациональность


всеравно это будет быстрее в некоторых случаях (ну точно быстрее чем бд по обьектам на массивах/кеше)

Цитата:
извращения подобного рода хуже чем кеш


резон? кешь медленне и неудобнее, чем же он тогда лучше?!

Цитата:
в си битовый здвиг быстрее операции сложения


при чем тут си? да, это разные интсрукции, сдвиги быстрее и?

Цитата:
планирую изучить полностью до субботы


лол) удачи!
Старый 13.08.2008, 18:02
Sebra

offline
Опыт: 5,603
Активность:
Цитата:
NETRAT, я пытаюсь обойти кеш. Решаю проблему очень родственную вот этой теме.
Мне нужно передавать в функцию 14 параметров, с малым периодом. Конечно, про кеш я знаю, но всетаки ищу другой способ.

Именно в той теме придумано несколько хороших способов.
Используй их и не мучайся.
Надеюсь, поймёшь хоть один
Цитата:
до субботы
Старый 13.08.2008, 20:20
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 15:58.