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

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

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

Вызов функции инициализации хэштаблицы имеет ограниченное кол-во (255-256)
Для "динамических" хэштаблиц можно использовать наработку Vlod'a - Hashtable 8000
Принятый ответ
21
ну а сейчас есть просадки ?
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
11
ну а сейчас есть просадки ?
Моментально. Единственное, что тестить, надо было не в инициализации, но и тем все нормально. Интересно , это реально было, или я просто заблуждался на пустом месте.

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

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

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