Algorithm-SkipList
view release on metacpan or search on metacpan
0.70_01 Sun Jun 6 2004
- tests rewritten (work in progress)
- fixed bug with next_key checking node when key was deleted
- uses Test::More for tests
- fixed "Too late to run INIT block" error with Test::More
use_ok, $NULL is now set in import() method
- fixed bug where level sometimes exceeded user-set max level
- P and max_level can now be set dynamically
- added tests for max_level and p
- checks for error when setting max_level or P
- fixed bug with definition of List::SkipList::Null
- $NULL is now an 'our' variable and accessible from outside
- level method was changed to autoload, since it was redundant
- minor optimization of _search_with_finger and _search
* header method in Node is read-only - it returns a pointer
which can be used to change values anyway
* key method in Node is read-only - it should not be
changed once it is inside a list
- added _adjust_level_threshold method from code that was in
_new_node_level to adjust SIZE_THRESHOLD/SIZE_LEVEL
- _adjust_level_threshold is called upon inserts and deletes
- SIZE_LEVEL does not decrease under MIN_LEVEL
* removed null() method - it was never used
* max_level cannot be greater than 32 (cleaner code)
- increased coverage of "heavy" test script
- minor updates to all test scripts
0.65 Thu June 3 2004
- updated README
0.64 Thu June 3 2004
- updated examples in documentation of custom node
- minor optimizations and code cleanup
- commented-out call to prev() in _debug
- removed use of Carp::Assert in tests
- redesigned benchmark script and included parse-out.pl
- updated Benchmark.txt
- updated README
0.63 Fri May 28 2004
- The default value of P is now 0.25, which appears to yield
better results in tests.
* renamed _random_level to _new_node_level
- SIZE_THRESHOLD/SIZE_LEVEL now decrease with deletions
- additional minor optimizations and code cleanup
- optimizations of Header and Null node types
- updated tests
- Benchmark: re-commented-out delete test for Tree::RedBlack
(which was accidentally uncommented in v0.62)
0.62 Tue May 18 2004
- fixed typo in (commented-out) assertion
- additional minor optimizations and code cleanup
- updated tests
- corrected README
0.61 Mon May 17 2004
* find no longer returns a finger in array context
* header is now a special subclass of List::SkipList::Node
- added special Null subclass of Header
- added null() method to return global null node
- a lot of minor code optimizations
- added comments
- maximum level of new nodes changed so that it is based on size
of list
- updated Benchmark.txt file
0.60 Sat Apr 24 2004
- updates to POD
- cleaned up comments
- added next function
- redid last_key, first_key and next_key functions
- last_key accepts arguments to modify LASTKEY
- changed calls to die to croak
- added experimental hooks to implement prev and prev_key methods
- added stub prev_key method
- bug fix: reset method called during copy method
- added more tests to heavy test script
* renamed find to find_with_finger and added find for searches
which do not return updated fingers
* renamed _search to _search_with_finger and added _search for
searches which do not return updated fingers
- modified next_key test to check for initial key of "0"
- removed if (CACHE_INSERT_FINGERS) tests
- additional optimizations and code cleanup
- added test to search for non-existent keys in Benchmark.pl
0.51 Mon Apr 12 2004
- fixed bug with next_key method called without first_key
- added tests for this bug
- added "heavy" test to distribution
- minor optimizations of delete method
- assertions are no longer required (which leads to ~3% speedup)
and removed section in POD about assertions
- removed commented-out references to forward method
- minor updates to source code comments
0.50 Mon Mar 29 2004
- section about Assertions added to POD
- documented level() method
- clear method now intitializes initial node header
- added various assertions
* removed the forward method from *::Node
- uses enum module
- added test for non-integer keys
- clear method now resets LAST_INSRT cache
- removed use of LEVEL for List::SkipList::Node
* key_cmp method accesses KEY directly rather than uses the key method
* calling convention for List::SkipList::Node is changed
- various optimizations to List::SkipList and *::Node
- added comparison to Tree::RedBlack in Benchmark.pl
- minor changes to _search method
- added Benchmark.pl script for generating benchmarks in distro
- redesigned benchmarking script
0.42 Sat Mar 20 2004
- fixed bug with Build.PL not autospliting files
0.41 Fri Mar 19 2004
* List::SkipList::Node is now array-based rather than hash-based
to improve speed.
( run in 0.885 second using v1.01-cache-2.11-cpan-e1769b4cff6 )