eric/metriks — pull request #27 by justinlynn (2012-12-28 01:42:54+00:00)
Title: Move to hash, drop 1.8 support

Hashes in 1.9 preserve insertion order (and thus return the correct keys for first priority queries). Switching to using Hash instead of RedBlackTree in 1.9 compatible ruby implementations could give a fairly large performance boost (on the order of 15-20% in comparison to plain, given the provided benchmarks).
```
fib(10): 100000 iterations
--------------------------------------------------
plain: 0.964130 secs 0.000010 secs/call
uniform: 1.925372 secs 0.000019 secs/call
- 99.7% slower than plain (0.000010 secs/call)
exponential_hash: 2.163068 secs 0.000022 secs/call
- 12.3% slower than uniform (0.000002 secs/call)
- 124.4% slower than plain (0.000012 secs/call)
exponential_avl: 2.294710 secs 0.000023 secs/call
- 6.1% slower than exponential_hash (0.000001 secs/call)
- 138.0% slower than plain (0.000013 secs/call)
exponential_red_black: 2.367657 secs 0.000024 secs/call
- 3.2% slower than exponential_avl (0.000001 secs/call)
- 145.6% slower than plain (0.000014 secs/call)
```

Of course, this means putting into place some selection based on 1.8/1.9-type ruby VMs unless we were to drop support for 1.8.x from Metriks. Dropping 1.8 support is the most straightforward action, in my opinion, and thus it is what I propose. Is this something that should be done given Ruby 2.x will be released soon?