hashtable — Использование хеш-таблиц в переполнении стека

Я читал и сейчас использую ассоциативные массивы в php в качестве хеш-таблиц. Вот пример того, что я делаю:

$bfHeroMoveHash = $this->createBattlefieldHeroMoveHash($Hero, $move);
if (isset(self::$_battlefieldHeroMoveSnapshots[$bfHeroMoveHash])) {
$this->fastForwardToSnapshot(self::$_battlefieldHeroMoveSnapshots[$bfHeroMoveHash]);
$Attack->Uses--;
} else {
$beforeMoveSnapshot = $this->getBattlefieldSnapshotBefore();
$this->performMove($move);
self::$_battlefieldHeroMoveSnapshots[$bfHeroMoveHash] = $this->getBattlefieldSnapshotAfter($beforeMoveSnapshot);
}

Это все хорошо, когда мне приходится перебирать большой объем данных, и в этом случае это значительно повышает производительность (увеличение производительности примерно на 60%). Тем не менее, для небольших наборов данных производительность снижается. Я предполагаю, что это из-за isset() функция, с помощью которой я проверяю, присутствует ли мой хэш в хеш-таблице или нет.

Я наткнулся на HashTable структура в php (ссылка здесь), но переписать весь мой код к этому, было бы очень большой работой. (Я использую хэш-таблицы simmilar в разных местах в моем скрипте)

В принципе, у меня было бы два вопроса:

  • Это HashTable структура чем-то отличается от базовых php-ассоциативных массивов, или это то же самое, только красиво обернутые в функции?
  • Есть ли способ избежать замедления моего сценария, когда анализируется только небольшой объем данных, и при этом сохраняется преимущество хеширования одинаковых данных?

Чтобы немного подробнее остановиться на моем втором вопросе, что я хотел бы знать, есть ли способ предотвратить накладные расходы на проверку, если хеш-таблица уже существует в хеш-таблице, при их использовании?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector