在PHP中使用哈希表

时间:2019-01-14 01:56:28

标签: php 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()函数引起的,我正在使用该函数检查哈希表中是否已经存在我的哈希。

我偶然发现了php(link here)中的HashTable结构,但是要重写我的整个代码将是一件非常艰巨的工作。 (我在脚本中的多个不同位置使用了类似的哈希表)

基本上,我将有两个问题:

  • 与基本的php关联数组相比,HashTable结构是否有所不同?或者是同一件事,只包装在函数中?
  • 仅分析少量数据时,还有什么方法可以避免减慢脚本速度,并且仍然保留对类似数据进行哈希处理的好处?

为了详细说明我的第二个问题,我想知道,在使用哈希表时,是否有任何方法可以防止检查哈希表中是否已经存在哈希的开销?

0 个答案:

没有答案