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

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

Закрытая тема
 
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
он просматривает только при коллизиях, обычно при первой же проверке появляется нужное значени
Пруф.
Faion добавил:
Hate:
да какая разница в 2012 год то? у кого то еще слабые компьютеры остались что байтосчитанием так занимаются?
Год не играет роли. У платформы вар3 никуда ограничения не делись.
Старый 08.08.2012, 17:20
ScorpioT1000
Работаем
offline
Опыт: отключен
Faion, то, что ты приводишь, называется обработка коллизий, а не принцип работы хештейбла:
Сам хештейбл работает моментально
Старый 08.08.2012, 17:22
Hate
конь вакуумный
offline
Опыт: 43,030
Активность:
Faion:
Faion добавил:
Hate:
да какая разница в 2012 год то? у кого то еще слабые компьютеры остались что байтосчитанием так занимаются?
Год не играет роли. У платформы вар3 никуда ограничения не делись.
я лично сохраняю индексы структур по хендлу, периодик таймеры по 0.02 дают ок профит без падения фпса. Хз даже зачем делать еще лучше если и так ок.
Старый 08.08.2012, 17:22
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Да и в любом случае согласной мой рекомендации маст хэв юз несколько таблиц. Для систем одну, для спеллов другую, для чего та там третью. Ибо моя UserDatа индексирует объекты. Следственно если юзать 1 хт, то будут использоваться "большие" индексы, следовательно массивы будут иметь большую размерность.
Faion добавил:
ScorpioT1000:
Сам хештейбл работает моментально
Пруф, где написано что у хт прямая адресация.
Старый 08.08.2012, 17:26
ScorpioT1000
Работаем
offline
Опыт: отключен
ScorpioT1000 добавил:
Понимаешь разницу между O(N) и O(1) ?
Старый 08.08.2012, 17:32
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Ну и? Где там хоть слово про прямую адресацию? Или ты решил что если поиск, вставка, удаление выполняются в среднем за О(1), то это прямая адресация?
ScorpioT1000:
в 95% случаев прямая адресация
Причем в 95% случаев :O
Старый 08.08.2012, 17:35
ScorpioT1000
Работаем
offline
Опыт: отключен
потому что расположение элемента в таблице напрямую зависит от хеша входного ключа, вычислительная сложность которого независима от количества и значения остальных элементов, исключая случай с коллизиями (которые в варе случаются примерно в 5% случаев)
Старый 08.08.2012, 17:37
YellowStar
poon
offline
Опыт: 15,144
Активность:
Так, короче выудил, что даже при одной переменной типа hashtable, можно сделать все очень даже забабца. Это мне и требовалось. Алокатор возьму стандартный, наверняка.
YellowStar добавил:
Еще вопрос. Если я задам такой параметр
constant hashtable name = InitHashtable()
что я выиграю в производительности?
Старый 08.08.2012, 17:40
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
потому что расположение элемента в таблице напрямую зависит от хеша входного ключа, исключая случай с коллизиями (которые в варе случаются примерно в 5% случаев)
Запись происходит в первую найденую свободную ячеку ._. ну или пруф что это не так.
Старый 08.08.2012, 17:42
ScorpioT1000
Работаем
offline
Опыт: отключен
Сам хештейбл работает моментально
Пруф, где написано что у хт прямая адресация.
вот кстати что в твоем понимании "прямая адресация" ? то, что ты передаешь "прямой адрес" ? ну хеш ключа без коллизий здесь играет роль прямого адреса
ScorpioT1000 добавил:
constant hashtable name = InitHashtable()
что я выиграю в производительности?
это по-моему, только директива для компилятора вара =) чтобы юзеры не трогали бж константы итп
ScorpioT1000 добавил:
Запись происходит в первую найденую свободную ячеку
кто тебе такое сказал? я тебе еще раз говорю, что это касается второго измерения - измерения для одинаковых хешей
ScorpioT1000 добавил:
щас нарисую
Старый 08.08.2012, 17:45
YellowStar
poon
offline
Опыт: 15,144
Активность:
Так, пока вы тут задрачиваете друг друга, спрашиваю еще пару вопросов.
  1. Так ли важен прелоад абилок, ведь запуск времени карты существенно вырастает.
  2. Динамичный Preload - лучше?
Старый 08.08.2012, 17:47
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
вот кстати что в твоем понимании "прямая адресация"
Прямая адресация == прямой адрес к ячейке с данными.
YellowStar:
constant hashtable name = InitHashtable()
Сделает таблицу статической, особой выгоды не извлечешь.
Faion добавил:
YellowStar:
Так ли важен прелоад абилок, ведь запуск времени карты существенно вырастает.
Да, или ингейм будут существенные лаги. Лучше полагать перед стартом, чем во время:)
YellowStar:
Динамичный Preload - лучше?
Нет. Имхо.
Faion добавил:
YellowStar:
Так ли важен прелоад абилок, ведь запуск времени карты существенно вырастает.
» прелоадер абилок
library AbilityPreloader initializer PreloadAbils uses Ascii

private int abcount = 10 // кол-во абилок

private void PreloadAbils() 
{
    int r = 0,i = 0
    unit d = CreateUnit(Player(14),SPELL_DUMMY,0.,0.,0.)
    while (i<abcount) 
    {
        if StringLength(I2S(i)) == 1
            r = S2A(A2S('A00')+I2S(i))
        elseif StringLength(I2S(i)) == 2
            r = S2A(A2S('A0')+I2S(i))
        elseif StringLength(I2S(i)) == 3
            r = S2A(A2S('A')+I2S(i))
        UnitAddAbility(d,r)
        UnitRemoveAbility(d,r)
        i++
    }
    RemoveUnit(d)
    d = null
}

endlibrary
Старый 08.08.2012, 17:50
ScorpioT1000
Работаем
offline
Опыт: отключен
теперь ясно ?
тут еще можно посмотреть
ScorpioT1000 добавил:
constant hashtable name = InitHashtable()
вот кстати в адекватных языках это не позволило бы изменять значения и в самой хештаблице
Старый 08.08.2012, 17:57
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
вот кстати в адекватных языках это не позволило бы изменять значения и в самой хештаблице
Да потому что в варе constant для объектов и функций, тоже самое что в норм языках static,
ScorpioT1000:
теперь ясно ?
Молодец, ты изобразил последовательную адресацию ключ-значение. Открою тайну, по умолчанию в хт не может быть прямой адресации. Мы ссылаемся на ключ, а потом уже только на значение. Вот если бы в хт ключ == путь к значению, то да.
Старый 08.08.2012, 18:21
ScorpioT1000
Работаем
offline
Опыт: отключен
Ключ и есть путь к значению
Старый 08.08.2012, 18:32
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
Ключ и есть путь к значению
Да щазз. Это тебе не справочники. У хт не одно значение как правило, и не один ключ, а два.
Старый 08.08.2012, 18:34
ScorpioT1000
Работаем
offline
Опыт: отключен
Просто не надо нести какой-то бред, если работал всегда только с массивами и списками, то это не значит, что всё работает так же и нету более крутых контейнеров, вот ещё и другим рассказываешь такую чушь.
Старый 08.08.2012, 18:37
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000:
Просто не надо нести какой-то бред, если работал всегда только с массивами и списками, то это не значит, что всё работает так же и нету более крутых контейнеров, вот ещё и другим рассказываешь такую чушь.
Лол.
Ок, и на какое значение ссылается ключ?:) На 1, на 2, на 3 значение в ячейке хт?)))
Старый 08.08.2012, 18:43
ScorpioT1000
Работаем
offline
Опыт: отключен
на int hash(string key)
Старый 08.08.2012, 18:45
YellowStar
poon
offline
Опыт: 15,144
Активность:
~Faion:
> » прелоадер абилок

Нет. У меня для удобства работы со способностями абилки имеют свои равкоды.

Код:
HE = первые две буквы имени героя
  |
'HEQ0' - 0,1,2,3,4,5,6,7,8,9,A,etc <- различные dummy абилки применяемые при касте способности 0-def
   |
   Горячая клавиша абилки
Старый 08.08.2012, 18:46
Закрытая тема

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

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

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

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



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