YellowStar
poon
offline
Опыт:
15,144Активность: |
Полезность struct
Короче, количество создаваемого мусора struct - невероятно. Помниться тут, кто-то выкладывал зае----- методы allocate - deallocate.
Дело в том, что для своего маленького проекта, катаю сейчас множество спеллов, и почти на каждый прикручиваю практически одинаковый
struct spell
unit cast unit targ real time ............ endstruct Ну и в принципе, я могу избежать этой порочной конструкции, ВООБЩЕ. Ну в плане, вообще - вообще. (считайте уже есть 120 спеллов, создано 120 alloc, dealloc). В принципе как вариант, можно переписать все на одну структуру, но это трах, с модами по типу -wtf -с максимальным кд, считаю быстро наполнит стак, учитывая что есть долгосрочные спеллы, в том числе и по 20 секунд (ну я набивал в соло 1000 спеллов, на одном герое, проверя возможности скорости вк)
Короче. Принимаю в дар куски кода. alloc/dealloc - принимаю также в дар, самый шустрый метод collision (текущий метод меня не устраивает, вообще ForGroup - оказался настолько медленным, что я решил написать матом, но кто-то отредактировал пост) Отредактировано Doc, 08.08.2012 в 14:10. |
08.08.2012, 13:54 | #1
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
xgm.ru/p/wc3/xdestr там ищи
ScorpioT1000 добавил:
ну тоесть фича в том, чтобы не брать все из массивов, т.к. это медленно, а юзать максимум локалок (но не много) + глобалки =) ScorpioT1000 добавил:
кароче говноваркрафт, что ещё можно сказать ScorpioT1000 добавил:
там вроде наследование есть и работает годно ? |
08.08.2012, 14:07 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
ScorpioT1000, да есть и вполне возможно все решить одной структурой с stub методами. |
08.08.2012, 14:10 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
ScorpioT1000:
Уже задрачиваю.
Есть вариант, все перенести на одну единственную Hash таблицу, но тогда опять таки, будет бесить меня, в том, что аргументы это таблицы могут быть заняты (хотя если взять общий COUNT)
по типу saveTYPE(hash,count,StringHash("DataName"),data)
Но опять таки, насколько быстр будет метод. Смогу ли я шустро юзать его в таймерах 0.0225? |
08.08.2012, 15:30 | #4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
обычно первый ключ юзается для номера инстанса "структуры", а второй для объявления в ней n переменных одного типа я думаю, это может полностью заменить структуры |
08.08.2012, 15:36 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
/o\
И вообще. Пишем обычный UserData для хт. Пишем параллельные массивы, типа Caster, Target, Dummy, Damage и тд и тп. Вешаем индекс на объект, запихиваем в эти массивы, не то что ваше говно в виде структур. Существенно быстрее.
Для общих массивов пишем общий Flush. И да, не будьте ногоголовыми, при освобождении индексов и вашей UserData, записывайте их в отдельный массив свободных. Если все сурово и нагрузка большая, то распределяй по нескольким хт, ибо адресация последовательная, чем больше даты, тем меньше. На маленьких объемах все ок. |
08.08.2012, 15:42 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
я представляю это как-то так
Отредактировано ScorpioT1000, 08.08.2012 в 15:55. |
08.08.2012, 15:49 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
Faion:
это 100% проверено? просто у меня например всё в одной и если переписывать то хотелось бы удостоверится |
08.08.2012, 15:52 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
16GB:
Что именно, скорость? Или вообще работоспособность? |
08.08.2012, 16:05 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
Faion, ну плане повышения производительности |
08.08.2012, 16:18 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
код чисто для примера, все либы не стал дергать, лень.
» UserData
» Темплейт
» Сампл
» Темплейт заюзаный в сампле
» Глобалки
Кэп говорит что нативный перебор в хт ключей, быстрее чем велосипеды для перебора массива объектов которые обычно юзают в структурах.
Faion добавил:
16GB: Ну если серьезно, то скорость доступа к ХТ примерно на 1\3 ниже чем скорость доступа к массиву(ибо там прямая адресация). А теперь внимание вопрос, что быстрее, 1 запрос который медленнее всего лишь на 1\3 или возьмем по минимуму, к примеру 10 запросов во время стандартного перебора. Ответ очевиден, не правда ли? Ну а далее идет прямая адресация по массивам. Параллельные массивы, выполняют функцию схожую структурам. Лучше завести под весь проект единую БД и юзать для всех спеллов. Быстрее организовать обмен данными не выйдет никак. |
08.08.2012, 16:25 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Faion, он имел ввиду почему несколько быстрее одной как бы._. |
08.08.2012, 16:28 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Nerevar:
Омфг, да потому что там не прямая адресация, а последовательная. неужели еще кто то об этом не знает. Вопрос уже поднимался 100500 раз. |
08.08.2012, 16:33 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Faion, и почему-то внезапно на каждом углу в рожок не трубят о том что лучше юзать 100500 таблиц вместо одной почему же? и где же цифры при превышении скольких значений в одной хт лучше создать дополнительные? и как отразится на скорости |
08.08.2012, 16:51 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
хештейбл на то и сделан, что в нём в 95% случаев прямая адресация и скорость работы не зависит от числа элементов в нём, кроме коллизий (1 коллизия - всеголишь + 1 такт при обращении к конкретному элементу, остальные работают так же моментально) |
08.08.2012, 17:00 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Nerevar:
Это ж на сколько нужно быть упоротым, что б не понять, что размерность влияет при последовательной адресации? |
08.08.2012, 17:02 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Ну, например, в данной таблице при появлении 65536-го элемента появляется 1 коллизия (в теории офк), которая, допустим, добавится "сзади" какогото рандомного элемента, скажем, 3000-го. Теперь при обращении к 65536-му или 3000-му элементу, выполнится 2 сравнения вместо одного. При обращении к остальным элементам возврат выполняется моментально, так же, как к таблице с всего одним элементом. |
08.08.2012, 17:09 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
ScorpioT1000:
|
08.08.2012, 17:14 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
"Алгоритм поиска просматривает ячейки хеш-таблицы в том же самом порядке, что и при вставке, до тех пор, пока не найдется либо элемент с искомым ключом"
он просматривает только при коллизиях, обычно при первой же проверке появляется нужное значение |
08.08.2012, 17:19 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
да какая разница в 2012 год то? у кого то еще слабые компьютеры остались что байтосчитанием так занимаются? |
08.08.2012, 17:19 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|