Искал в общем готовую библиотеку типа питонового numpy , пока не нашел но наткнулся на частику того , что нужно. В данной библитеке, под каждую динамическую переменную инициализируется новая хэш-таблица. Я всегда боялся инициировать под одну задачу несколько хэш-таблиц, мотивируя это тем , что:
Первое. хэш-таблица инициализируется не быстро
Пояснение
Я это тестировал еще очень задолго до выхода рефорджа, например 10 хэш-таблиц инициализировать было - просадка фпс.
Второе. Инициализированная хэш-таблица жрет много оперативы.
Пояснение
Когда-то, в бородатые времена, старики джазеры это писали, когда я еще молод был. Но я никогда не тестил сколько конкретно.
Третье. К стандартному массиву обращаться быстрее.
Пояснение
Но из статьи я узнаю, что все массивы и переменные обращаются к хэш-таблицам.
Вопрос: Все три пункта ошибочны? ах да, я и забыл, что читал когда то эту статью но по последнему пункту все равно не понятно.

Принятый ответ

Собственно, если хештаблица не имеет никаких вписанных в неё значений, то её "изначальный" вес будет равен 0x28 байтам, далее каждый новый "хешключ" (который состоит из родительского и дочернего ключа) будет добавлять по 4 байта (то бишь никакого отличия от массивов). Исключение - это "стринг", там каждая буква = один байт, что опять же идентично обычным переменным.

Вызов функции инициализации хэштаблицы имеет ограниченное кол-во (255-256)
Для "динамических" хэштаблиц можно использовать наработку Vlod'a - Hashtable 8000
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
27
4 месяца назад
3
Собственно, если хештаблица не имеет никаких вписанных в неё значений, то её "изначальный" вес будет равен 0x28 байтам, далее каждый новый "хешключ" (который состоит из родительского и дочернего ключа) будет добавлять по 4 байта (то бишь никакого отличия от массивов). Исключение - это "стринг", там каждая буква = один байт, что опять же идентично обычным переменным.

Вызов функции инициализации хэштаблицы имеет ограниченное кол-во (255-256)
Для "динамических" хэштаблиц можно использовать наработку Vlod'a - Hashtable 8000
Принятый ответ
0
22
4 месяца назад
0
ну а сейчас есть просадки ?
function Trig_Initialization_Actions takes nothing returns nothing
    local integer i
    globals
        hashtable array HASH
    endglobals
    set i = 1
    loop
        set HASH[i] = InitHashtable()
        call BJDebugMsg("Hashtable " + I2S(i) + " initialised")
        set i = i + 1
        exitwhen i > 256
    endloop
endfunction

//===========================================================================
function InitTrig_Initialization takes nothing returns nothing
    set gg_trg_Initialization = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Initialization, function Trig_Initialization_Actions )
endfunction
у меня нет просадок на 1.31
0
9
4 месяца назад
0
ну а сейчас есть просадки ?
Моментально. Единственное, что тестить, надо было не в инициализации, но и тем все нормально. Интересно , это реально было, или я просто заблуждался на пустом месте.

Для "динамических" хэштаблиц можно использовать наработку Vlod'a - Hashtable 8000
спасибо за наводку

Внесу ясность для чего это вообще спрашивается. Нужно подгружать N массивов Размером L*L>256^2, затем, подгружая каждый массивов, перемножать, складывать с другим массивом. Есть ощущение, что такое динамически можно только на хэштаблицах. Но я, честно говоря, немного плаваю в базе хэштаблиц. И не понимаю как это будет по скорости и вписывается ли это в ограничения.
0
29
4 месяца назад
0
Но я, честно говоря, немного плаваю в базе хэштаблиц.
Относись к ним как к двумерным массивам.

Исключение - это "стринг", там каждая буква = один байт
Враньё.
0
9
4 месяца назад
Отредактирован Koladik
0
Относись к ним как к двумерным массивам.
Разумно, спасибо, а максимальная размерность какая получается в таком представлении? Ну то есть по горизонтали понятно 2^32, а по вертикали?
0
29
4 месяца назад
0
Koladik, в обе стороны 0xFFFFFFFF, так что ни в чём себе не отказывай.
2
27
4 месяца назад
2
Враньё.
Лучше бы сразу приложил статью/комментарий который опровергает анрайза
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.