NF> If you do many deletes, it is slow. It has to search the array for NF> the element to delete and then move all the data that follows it. NF> Note that slice! is not the same thing, when you do slice!(x) you remove NF> the element at position x, not the element with content x. So the NF> array does not have to be searched. NF> If you want to do fast deletes based on content, you can use a hash to store NF> the data. Store the data in the key of the hash and a dummy value such as NF> "true" in the value. You get fast lookups and there is no need to move NF> elements. This is 4 times as fast as arr.delete(obj) on a 500 element array, it probably gets faster as the array grows: hits = (200..300).to_a 1.upto(1000) do arr = [] 1.upto(500) do |x| arr.push(x) end hash = Hash.new arr.each_with_index do |a,i| hash[a] = i end hits.each do |hit| arr.slice!(hash[hit]) if hash[hit] end end 2.13 real 2.05 user 0.00 sys I wonder if Array#- should do the same thing internally? The above method is 12 times as fast as Array#- But I digress... I'm still struggling with select()... :-) I can't find any examples except in "server" code. thanks, -joe