Слышал, что не стоит создавать много хештаблиц, так как это занимает много памяти.
function TimerCallback takes nothing returns nothing
	call InitHashtable( )
endfunction

function Start takes nothing returns nothing
	call TimerStart( CreateTimer( ), 0.010, true, function TimerCallback )
endfunction
Или вес хештаблицы растёт по мере добавления в неё данных? Но тогда в чём проблема большого количества хештаблиц. Ведь что одна хештаблица весом 10, или пять хештаблиц весом по 2. В итога оба варианта весят по 10.

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

Каждый новый хеш-тейбл инициализируется заново и остаётся висеть в оперативке до удаления из скрипта карты или до завершения игры (по крайней мере, мне так помнится). Операции выделения памяти довольно тяжёлые сами по себе, но куда значимее тот факт, что пересоздание и плождение таблиц - абсолютно бессмысленные операции по своей сути, они не несут вообще никакого положительного выхлопа.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
30
7 лет назад
Отредактирован Clamp
0
Каждый новый хеш-тейбл инициализируется заново и остаётся висеть в оперативке до удаления из скрипта карты или до завершения игры (по крайней мере, мне так помнится). Операции выделения памяти довольно тяжёлые сами по себе, но куда значимее тот факт, что пересоздание и плождение таблиц - абсолютно бессмысленные операции по своей сути, они не несут вообще никакого положительного выхлопа.
Принятый ответ
0
32
7 лет назад
0
Зачем вам 10 хештаблиц? Все прекрасно влазит в 1.
0
16
7 лет назад
0
Забавный факт - хештаблица генерируется в момент выделения карты в лобби, а не при загрузке или исполнении скрипта. Точнее, сперва при проверке синтаксиса, а затем - когда жмется "старт". А обычный скрипт выполняется примерно после середины полосы загрузки.
Но вообще да, в движке жестко указано 255 таблиц максимум, дальше InitHashtable просто не сработают.
0
30
7 лет назад
Отредактирован Clamp
0
DracoL1ch, то есть игра до исполнения кода считает максимальное количество одновременно существующих таблиц? Каким образом?
Или я неверно понял сообщение?
0
16
7 лет назад
Отредактирован DracoL1ch
0
по крайней мере из globals инициализация InitHashtable идет до начала загрузки. Ну а лимит реализован просто - однажды у тебя будет 255 вызовов InitHashtable и после этого новые создаваться не будут.
0
21
7 лет назад
0
У тебя по Таблице на объект чтоли? Поделись дурью.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.