Сейчас 12:47:11 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Хэш - таблицы и глобальные переменные. (Семинар картостроителей.)
Хэш - таблицы и глобальные переменные.
DarkVaderДата: Понедельник, 15 Ноября 2010, 22:20:41 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Часто замечал что у многих картостроителей расходятся мнения в том что же лучше, хэш - таблица или глобальные переменные.

Призываю знающих людей отписать в этой теме свое мнение и поделиться информацией.

Добавлено (15-11-2010, 22:20)
---------------------------------------------
Открою семинар=)

Я являюсь сторонником хэш - таблиц. Вот мое мнение.

1) при использовании хэш - таблиц нет необходимости создавать огромное количество глобальных перменных, что немного снижает вес карты и прилично ускоряет ее загрузку.
2) хэш - таблица, если и не являятся более быстрой системой чем глобальные переменные, то уж по крайней мере не работает медленнее их так как сама являяется такой же переменной, всегда хранится в оперативной памяти компьютера послее инициализации что прибавляет ей скорости работы, так же основным параметром скорости работы хэш таблицы является коэффициен ее заполнения, то есть скорость ее работы пропорциональна ее заполненности, а хэш - таблицы варкрафта являются динамическими ее размеры определяются мерой необходимости, исходя из этого коэффициент заполенности хэш таблицы варкрафта, это в 99% константа, и очень маленькая, занчит скорость ее работы практически всегда постоянная и довольно быстрая. + ко всему ключи ячеек памяти хэш - таблицы в варкрафте всегда известы что еще ускоряет скорость ее работы.
3) хэш таблицы позволяют очень легко создавать MUI спелы

 

FkoFFДата: Понедельник, 15 Ноября 2010, 22:23:13 | Сообщение # 2
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Как бы тут вопроса нет. Сторонники глобалок - триггерщики самоучки. Хэш это решение 80-90% проблем картостроителей связанных с хранением данных.
К тому же хэш - просто напросто быстрее чем глобальные переменные.


 

DarkVaderДата: Понедельник, 15 Ноября 2010, 22:51:58 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (FkoFF)
Сторонники глобалок - триггерщики самоучки

Ну в большинстве случаев люди занющие Jass это самоучки, но вот это выражение на 100% отражает суть сторонников 800 глобалок в карте и звучит грозно
"триггерщики самоучки"=))))

FkoFF, +1 =)

Добавлено (15-11-2010, 22:43)
---------------------------------------------
p.s Хэш-таблицы (hash tables) — одно из величайших изобретений информатики. Сочетание массивов и списков с небольшой добавкой математики позволило создать эффективную структуру для хранения и получения динамических данных.

Добавлено (15-11-2010, 22:51)
---------------------------------------------
еще хочу добавить что хэш - таблицы используются в различных компиляторах програмного кода, в интернет браузерах и т.д. хэш - таблицы очень широко распространены, это удобная и быстрая система

 

incomeДата: Понедельник, 15 Ноября 2010, 23:01:07 | Сообщение # 4
3 уровень
Группа: Заблокированные
Сообщений: 63
Награды: 0
Репутация: 20
Блокировки:
хеш таблицы ,конечно, лучше глобалок, хотя смотря какие цели приследовать.

вообще лучше использовать структуры) они в разы быстрее хеш таблиц, ну и совместимость со всеми патчами вц


Не ошибается только тот, кто ничего не делает
 

FkoFFДата: Понедельник, 15 Ноября 2010, 23:03:05 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
ну, структуры это уже из другой оперы, в данном случае мы устраиваем небольшой диспут что бы заткнуть за пояс одного не очень умного картостроителя (ЭДИТОРРР) :D

 

[DUОS]Дата: Понедельник, 15 Ноября 2010, 23:12:13 | Сообщение # 6
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (FkoFF)
Хэш это решение 80-90% проблем картостроителей связанных с хранением данных.

Плюсую. Сам юзаю и очень классная вещь.
Quote (income)
вообще лучше использовать структуры) они в разы быстрее хеш таблиц, ну и совместимость со всеми патчами вц

А вообще мы не говорим тут о жасс нью ген ереси. Окей? =D


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

H_A_PKДата: Понедельник, 15 Ноября 2010, 23:12:55 | Сообщение # 7
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Хеш это хорошо
Глобалки это тоже хорошо
у каждого свои преимущества
У глобалок как уже известно было ранее массивы быстрее, чем сам хеш. Структуры можно создавать спокойно и не надо говорить, что это геморойно ибо:
Code

scope
globals
private location loc = Location(0,0)
private unit array u
endglobals
...
endscope

записать не долго в отличии от отдельных функций с таймерами и т.п. и т.д.

Но в тоже время с хешом ссылки можно вешать на любой хэндл, что вообщем-то и удобно. Т.е. можно форгроуппом на юнитов вешать целую кучу значений на разные хеши. Хеш не имеет придела в отличии массива 8192.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

EdiTTORRДата: Понедельник, 15 Ноября 2010, 23:35:17 | Сообщение # 8
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (FkoFF)
в данном случае мы устраиваем небольшой диспут что бы заткнуть за пояс одного не очень умного картостроителя (ЭДИТОРРР)

Не переходи на личности и почитай статьи ^_^
Quote (|DUОS|)
А вообще мы не говорим тут о жасс нью ген ереси. Окей? =D

+1
Quote (income)
хеш таблицы ,конечно, лучше глобалок, хотя смотря какие цели приследовать.

Не забываем обосновывать окей?
Quote (H_A_PK)
Плюсую. Сам юзаю и очень классная вещь.

Не забываем обосновывать окей?
DarkVader, кстати в теме(из-за которй возник спор) я не советовал(ну или ругал) хеш именно потому-что это была динамическая система перемещения, а учитывая что хеш в 10 раз медленнее глобалок(не только мои слова(с)) то он для такой системы грубо говоря "рискованный" (представьте что вам надо бежать куда-то но ваша скорость в 10 раз медленнее скорости других людей О_О).
H_A_PK, согласен, но кому надо столько(8192)? В крайнем случае можно не полениться и инициализировать ещё одну глобу.
Quote (DarkVader)
p.s Хэш-таблицы (hash tables) — одно из величайших изобретений информатики.... ...еще хочу добавить что хэш - таблицы используются в различных компиляторах програмного кода, в интернет браузерах и т.д. хэш - таблицы очень широко распространены, это удобная и быстрая система

Давай поговорим о WarCraftIII ок?

Всё равно считаю что в динамических системах хеш лучше не юзать(исключения есть конечно), на то они и динамичные.
А вот в люб.др. аспектах думаю это не особо повредит геймплею.


Местами здесь.


Сообщение отредактировал EdiTTORR - Понедельник, 15 Ноября 2010, 23:36:35
 

H_A_PKДата: Понедельник, 15 Ноября 2010, 23:44:00 | Сообщение # 9
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
EdiTTORR, для этого в системах и юзают такие примеры как :
Quote (H_A_PK)
scope
globals
private location loc = Location(0,0)
private unit array u
endglobals
...
endscope

не раз замечал.
Quote (EdiTTORR)
H_A_PK, согласен, но кому надо столько(8192)

подели это число на всех игроков т.е. 12 и это количество ой как сократится


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

EdiTTORRДата: Понедельник, 15 Ноября 2010, 23:48:45 | Сообщение # 10
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (H_A_PK)
не раз замечал.

Не, пробегающего мимо редактора Vexorian и других авторов не замечал...
Quote (H_A_PK)
подели это число на всех игроков т.е. 12 и это количество ой как сократится

Ладно но
Quote (EdiTTORR)
В крайнем случае можно не полениться и инициализировать ещё одну глобу.


Местами здесь.
 

DarkVaderДата: Вторник, 16 Ноября 2010, 00:26:13 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (EdiTTORR)
DarkVader, кстати в теме(из-за которй возник спор) я не советовал(ну или ругал) хеш именно потому-что это была динамическая система перемещения, а учитывая что хеш в 10 раз медленнее глобалок(не только мои слова(с)) то он для такой системы грубо говоря "рискованный" (представьте что вам надо бежать куда-то но ваша скорость в 10 раз медленнее скорости других людей О_О).

Пожалуйста укажи на источник который это говорит ( что хэш в 10 раз медленнее глобалок ).
Где тут риск? Ты боишься что хэш не успеет ответить на запрос? Как ты себе представляешь динамическую систему?
Немного теории:
Динамическая система — математическая абстракция, предназначенная для описания и изучения систем, эволюционирующих с течением времени.
Динамическая система представляет собой математическую модель некоторого объекта, процесса или явления.

Главной сутью динамики как раздела физики является изменения свойств систем сил во времени.
А теперь перейдем на рямую к варкрафту.
На сколько часто ты сможешь изменять свою систему? Не более чем раз в 0.01 сек.
А скорость выполнения операций в варкрафте составляет несколько микро секунд. в том числе и операций с хэш таблицами или глобалками.
Допустим грубо говоря скорость оперций с хэшем и глобалками равны и составляю 10 микросекунд что равняется 10^-5, а 0.01 = 10^-2 в итоге получаем разность между ними в 3 знака после запятой, получается что у нас остается время еще для 1000 операций, до следующего изменения системы.
То есть даже при меньшей скорости хэш таблицы риск = 0, так как времени на все необходимые операции остается еще очень много
А при том что хэш таблицы намного удобнее в использовании, то прослеживается явное ее преимущество.

Добавлено (16-11-2010, 00:26)
---------------------------------------------
да и на практике после того как я начал использовать хэш-таблицы вместо глобалок они никогда не работали медленнее.

 

Banzay89Дата: Вторник, 16 Ноября 2010, 00:48:12 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Однозначно хеш! :D
 

EdiTTORRДата: Вторник, 16 Ноября 2010, 00:50:07 | Сообщение # 13
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (DarkVader)
Пожалуйста укажи на источник который это говорит ( что хэш в 10 раз медленнее глобалок ).

Осваиваем jass, см.Приложение 1: проблемы Кеша и РБ
А лучше прочитай всё хД
Quote (DarkVader)
Где тут риск? Ты боишься что хэш не успеет ответить на запрос? Как ты себе представляешь динамическую систему?

Боюсь что игрок не насладится хорошей игрой.
Quote (DarkVader)
На сколько часто ты сможешь изменять свою систему? Не более чем раз в 0.01 сек.
А скорость выполнения операций в варкрафте составляет несколько микро секунд. в том числе и операций с хэш таблицами или глобалками.
Допустим грубо говоря скорость оперций с хэшем и глобалками равны и составляю 10 микросекунд что равняется 10^-5, а 0.01 = 10^-2 в итоге получаем разность между ними в 3 знака после запятой, получается что у нас остается время еще для 1000 операций, до следующего изменения системы.
То есть даже при меньшей скорости хэш таблицы риск = 0, так как времени на все необходимые операции остается еще очень много

Глобалки конечно быстрее... Но ты наверное прав, хотя глобы тоже могут сгодится в некоторых случаях. Ок.


Местами здесь.
 

Banzay89Дата: Вторник, 16 Ноября 2010, 00:54:30 | Сообщение # 14
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
Осваиваем jass

когда писалась эта статья хеша еще небыло как такового - был кеш

 

DarkVaderДата: Вторник, 16 Ноября 2010, 01:13:49 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Banzay89)
когда писалась эта статья хеша еще небыло как такового - был кеш

угу, хэш таблицы появились с патча 1.24, эту статью я читал и могу согласиться что кэш медленнее глобалок, но разница в кэше и хэш - таблицах колосальная, во первых кэш хранится на жестком диске что очень уменьшает скорость его отклика, а хэш - таблицы хранятся в озу. да и структура системы у хэш - таблиц и кэша разные
к тому же ранее для нахождения нужных данных использовался RB, что математически как минимум снижает скорость работы кэша еще на треть отностиельно хэш - таблиц.

Добавлено (16-11-2010, 01:13)
---------------------------------------------

Quote (DarkVader)
Существует доказательство того, что 1 обращение к Кешу (чтение/запись) раз в 10 медленнее, чем обращение к переменным.

это строка из той статьи, и в ней конкретно говорится о кеше, это просто невнимательность=)

Сообщение отредактировал DarkVader - Вторник, 16 Ноября 2010, 02:11:43
 

P@d®eДата: Вторник, 16 Ноября 2010, 07:51:37 | Сообщение # 16
6 уровень
Группа: Пользователи
Сообщений: 221
Награды: 0
Репутация: 73
Блокировки:
Quote (EdiTTORR)
Боюсь что игрок не насладится хорошей игрой.

а ты в DotА (доту) играл?! Там лаги есть?! Если у тебя машина тормознутая, то это уже твои проблемы. Не знаю как тебе, но для меня введение хэш таблицы дало огромные возможности. Однозначно хэш и ТОЧКА!

Добавлено (16-11-2010, 07:50)
---------------------------------------------

Quote (EdiTTORR)
хотя глобы тоже могут сгодится в некоторых случаях

в чтастности для какихнибудь счетчиков ( например номер волны в ТД), для группы юнитов которых удить надо (напимер: крипы в ТД. крипы на аренах на выживание) для квестов в кампаниях, короче для того, что иницилизируется 1 раз в игре.

Добавлено (16-11-2010, 07:51)
---------------------------------------------

Quote (P@d®e)
удить

описка: "убить"


Кому помог поставьте плюсичек.
 

DarkVaderДата: Вторник, 16 Ноября 2010, 16:26:23 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (P@d®e)
а ты в DotА (доту) играл?! Там лаги есть?!

угу, и самое интересное старые ее версии работали с кешем и даже там лагов небыло

 

rixt7956Дата: Вторник, 16 Ноября 2010, 16:28:55 | Сообщение # 18
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Чё спорить, всем итак понятно что Хэш во много раз лучше
 

EdiTTORRДата: Вторник, 16 Ноября 2010, 17:23:33 | Сообщение # 19
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (DarkVader)
на вкус и цвет товарища нет, но как говориться в споре рождается истина=))))

Что правда то правда! Всем спасибо!


Местами здесь.
 

3JIODEйДата: Вторник, 16 Ноября 2010, 17:46:00 | Сообщение # 20
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
А ну ка просветите как использовать хеш таблицы?))

Грац меня с шестым взломом администрации
 

DarkVaderДата: Вторник, 16 Ноября 2010, 18:29:15 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (3JIODEй)
А ну ка просветите как использовать хеш таблицы?))

Статья, практика и мозги=)))) и вуаля, ты умеешь пользоваться хэш - таблицами.

А если в общих чертах, то создаешь переменную хэш - таблицу, инициилизируешь ее желательно при загрузке мапы ну или когда нужно, создавать 10 хэш-таблиц нет необходимости, для нормальной работы всех систем достаточной одной. Дальше сохраняешь в нее данные и загружаешь их где тебе нужно.

Добавлено (16-11-2010, 18:29)
---------------------------------------------
да и на GUI нет возможности с ними работать

 

DragoNДата: Вторник, 16 Ноября 2010, 18:50:30 | Сообщение # 22
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
честно говоря смысл холивара хэш vs массивы(если такой ещё не начался (: )
каждый использует что ему удобно
я например предпочитаю структуры или паралельные массивы(хотя это одно и тоже, но структуры выглядят по нагляднее)
иногда юзал хэш(GetHandleId(t)-0x100000 тащит)))


El Psy Congroo
 

DarkVaderДата: Вторник, 16 Ноября 2010, 19:12:00 | Сообщение # 23
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Dragon93, а если я объявляю глобалки в коде карты, то они создаются при компиляции этого кода или при загрузке карты?
 

RalexДата: Вторник, 16 Ноября 2010, 19:28:04 | Сообщение # 24
6 уровень
Группа: Проверенные
Сообщений: 213
Награды: 0
Репутация: 6
Блокировки:
Раз уж о структурах заговорили, то с чего начать изучать vJass? Ну в смысле статейку с нуля плз подкиньте

1 - я практически всё пишу по памяти
2 - если я не ответил - пишите ПМ


Сообщение отредактировал Ralex - Вторник, 16 Ноября 2010, 19:28:23
 

DragoNДата: Вторник, 16 Ноября 2010, 19:54:16 | Сообщение # 25
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (DarkVader)
компиляции этого кода

Quote (Ralex)
Ну в смысле статейку с нуля плз подкиньте

http://warcraft3ft.info/board....-0-1186


El Psy Congroo
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Хэш - таблицы и глобальные переменные. (Семинар картостроителей.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz