From: S2 Date: 2008-04-26T23:55:08+09:00 Subject: Re: All occurances of a character in a string Raghu Go wrote: > I did a quick test and like Siep's modifications.. > > Method1 Time elapsed: 0.236999988555908 milliseconds > > Siep's modification Method2 Time elapsed: 0.123999834060669 milliseconds > your computer must be really slow :) s2@magnesium:~/temp$ cat test.rb def method1(a) i = 0 ret = Hash.new a.scan(/./) {|c| ret[c] = ret[c].nil? ? [i] : ret[c] << i i = i + 1 } p a p ret end def method2(str) #Siep ar = str.split("") result = Hash.new{Array.new} ar.each_with_index do|item,index| result[item] = result[item]< require 'benchmark' => true irb(main):002:0> include Benchmark => Object irb(main):003:0> require 'test' => true irb(main):004:0> puts Benchmark.measure {method1("abbccdaab")} "abbccdaab" {"a"=>[0, 6, 7], "b"=>[1, 2, 8], "c"=>[3, 4], "d"=>[5]} 0.000000 0.000000 0.000000 ( 0.000227) => nil irb(main):005:0> puts Benchmark.measure {method2("abbccdaab")} a = 0,6,7 b = 1,2,8 c = 3,4 d = 5 0.000000 0.000000 0.000000 ( 0.000278) => nil irb(main):006:0> puts Benchmark.measure {method3("abbccdaab")} {"a"=>[0, 6, 7], "b"=>[1, 2, 8], "c"=>[3, 4], "d"=>[5]} 0.000000 0.000000 0.000000 ( 0.000209) => nil irb(main):007:0>