serima / hashee
hash for search
0.0.1
2015-10-11 16:37 UTC
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2025-07-20 00:04:14 UTC
README
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.