<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,20 +1,19 @@
 $: &lt;&lt; File.join(File.expand_path(File.dirname(__FILE__)), '../lib')
 require 'algorithms'
-include Algorithms
+include Containers
 
 require 'rubygems'
 require 'rbench'
 
-RBench.run(10) do
+RBench.run(2) do
   trees = %w(hash rbtree splaytree)
   trees.each { |tree| self.send(:column, tree.intern) }
   
-  rbtree = Containers::RBTreeMap.new
-  splaytree = Containers::SplayTreeMap.new
+  rbtree = RBTreeMap.new
+  splaytree = SplayTreeMap.new
   hash = Hash.new
   
-  random_array = Array.new(10000) { |i| rand(i) }
-  num = 1000
+  random_array = Array.new(200000) { |i| rand(i) }
   
   report &quot;Insertion&quot; do
     rbtree { random_array.each_with_index  { |x,index| rbtree[index] = x } }
@@ -22,15 +21,31 @@ RBench.run(10) do
     hash { random_array.each_with_index  { |x,index| hash[index] = x } }
   end
   
-  report &quot;has_key?&quot; do
-    rbtree { num.times { |n| rbtree.has_key?(n) } }
-    splaytree { num.times { |n| splaytree.has_key?(n) } }
-    hash { num.times { |n| hash.has_key?(n) } }
+  report &quot;has_key? (linear order)&quot; do
+    rbtree { random_array.each { |n| rbtree.has_key?(n) } }
+    splaytree { random_array.each { |n| splaytree.has_key?(n) } }
+    hash { random_array.each { |n| hash.has_key?(n) } }
   end
   
   report &quot;Lookup in sorted order&quot; do
     rbtree { rbtree.each { |k, v| k } }
     splaytree { splaytree.each { |k, v| k } }
     hash { hash.sort.each { |k, v| k } }
+    
+    # a1, a2, a3 = [], [], []
+    # rbtree.each { |k, v| a1 &lt;&lt; k }
+    # splaytree.each { |k, v| a2 &lt;&lt; k }
+    # hash.sort.each { |k, v| a3 &lt;&lt; k }
+    # 
+    # puts &quot;Lookup correct&quot; if a1 == a2 &amp;&amp; a1 == a3
   end
+  
+  report &quot;Random lookups in a smaller subset&quot; do
+    select_subset = random_array[0..random_array.size/20] # 5%
+    size = select_subset.size
+    rbtree { 10000.times { rbtree[ select_subset[rand(size)] ] } }
+    splaytree { 10000.times { splaytree[ select_subset[rand(size)] ] } }
+    hash { 10000.times { hash[ select_subset[rand(size)] ] } }
+  end
+  
 end</diff>
      <filename>benchmarks/treemaps.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ea6eb94afde65e45c54d7d34c7bea421c044ffc8</id>
    </parent>
  </parents>
  <author>
    <name>Kanwei Li</name>
    <email>kanwei@gmail.com</email>
  </author>
  <url>http://github.com/kanwei/algorithms/commit/334b54fbf4f75ef45a3ce78335e0750037b44a9f</url>
  <id>334b54fbf4f75ef45a3ce78335e0750037b44a9f</id>
  <committed-date>2009-03-30T14:54:38-07:00</committed-date>
  <authored-date>2009-03-30T14:54:38-07:00</authored-date>
  <message>                                              HASH |  RBTREE | SPLAYTREE |
--------------------------------------------------------------------------
Insertion                                    0.925 |   1.024 |     0.773 |
has_key? (linear order)                      0.187 |   0.279 |     0.362 |
Lookup in sorted order                       3.900 |   0.467 |     0.471 |
Random lookups in a smaller subset           0.016 |   0.017 |     0.018 |

Performance so far</message>
  <tree>0694e32baabe52f4f236bb734615a1986b87f87c</tree>
  <committer>
    <name>Kanwei Li</name>
    <email>kanwei@gmail.com</email>
  </committer>
</commit>
