serima/hashee

hash for search

0.0.1 2015-10-11 16:37 UTC

This package is not auto-updated.

Last update: 2025-07-20 00:04:14 UTC


README

Build Status Scrutinizer Code Quality

Very simple optimization using hash lookups to search an array.

Installation

composer require serima/hashee

Usage

<?php

use Serima\Hashee\Hashee;

$hashForSearch = array();
Hashee::add($hashForSearch, 'super');
Hashee::add($hashForSearch, 'bad');
Hashee::add($hashForSearch, 'word');

Hashee::in('good', $hashForSearch); // false
Hashee::in('bad', $hashForSearch); // true
Hashee::release($hashForSearch);

$bannedUserNames = array('Jim', 'Taro', 'Fred');
Hashee::addBulk($bannedUserNames);
Hashee::delete($bannedUserNames, 'Fred');
Hashee::in('Jim', $bannedUserNames); // true
Hashee::in('Fred', $bannedUserNames); // false
Hashee::release($bannedUserNames);

Benchmark

You can see the benchmark script in tests/Benchmark.php Graphical here. https://docs.google.com/spreadsheets/d/11zw--aiHH33umh86y_ctiEx87XTsUIK7YMHqctZ_FzM/edit?usp=sharing

% php tests/Benchmark.php
========================================
elementNumber : 5
in_array: 0.030714988708496
hashee:   0.013134956359863
========================================
========================================
elementNumber : 10
in_array: 0.032805919647217
hashee:   0.012555122375488
========================================
========================================
elementNumber : 100
in_array: 0.15763115882874
hashee:   0.010236978530884
========================================
========================================
elementNumber : 1000
in_array: 1.3289721012115
hashee:   0.010061025619507
========================================
========================================
elementNumber : 10000
in_array: 13.358424901962
hashee:   0.0097849369049072
========================================

Thanks

Hashee is inspired by this entry written by @mtdowling.

Favor Hash Lookups Over Array Searches

I coded benchmark script using example from it.

References

http://stackoverflow.com/questions/2473989/list-of-big-o-for-php-functions

LICENSE

MIT License.