# \$B54<V%Q%U%)!<%^%s%9(B

e\$B\$^\$D\$b\$He(B e\$B\$f\$-\$R\$m\$G\$9e(B

[ruby-talk:188721]e\$B\$G!“0J2<\$N%W%m%0%i%`e(B(e\$BFC\$Ke(Bquxe\$B\$H8F\$P\$l\$k%Q%?!<e(B
e\$B%s\$K\$*\$\$\$Fe(B)1.9(e\$B54<Ve(B)e\$B\$,e(B1.8e\$B\$h\$jCY\$\$\$H\$\$\$&;XE&\$,\$”\$j\$^\$7\$?!#e(B

e\$B\$*CN\$i\$;\$^\$G!#e(B

@re = /^\w±\w+\$/ # Some random expression
def foo(str)
str =~ @re
end

def bar(str)
str =~ /^\w±\w+\$/
end

def qux(str)
str =~ Regexp.new("/^\w±\w+\$/")
end

require ‘benchmark’
include Benchmark

bm(16) do |test|
test.report(“foo”) do
1_000_000.times {foo(“abc-xyz”)}
end
test.report(“bar”) do
1_000_000.times {bar(“abc-xyz”)}
end
test.report(“qux”) do
1_000_000.times {qux(“abc-xyz”)}
end
end

Yukihiro M. wrote:

[ruby-talk:188721]e\$B\$G!“0J2<\$N%W%m%0%i%`e(B(e\$BFC\$Ke(Bquxe\$B\$H8F\$P\$l\$k%Q%?!<e(B
e\$B%s\$K\$*\$\$\$Fe(B)1.9(e\$B54<Ve(B)e\$B\$,e(B1.8e\$B\$h\$jCY\$\$\$H\$\$\$&;XE&\$,\$”\$j\$^\$7\$?!#e(B

e\$B\$*CN\$i\$;\$^\$G!#e(B

e\$B\$*CN\$i\$;\$"\$j\$,\$H\$&\$4\$6\$\$\$^\$9!#e(B
Linuxe\$B\$He(BCygwine\$B\$G3NG’\$7\$F\$_\$^\$7\$?!#e(B
(e\$BC"\$7!"e(BGCe\$B\$N1F6A\$r=|\$/\$?\$a\$Ke(BGC.disablee\$B\$rDI2C\$7\$F!"e(B
e\$B7+\$jJV\$72s?t\$r;0==K|2s\$KJQ99\$7\$^\$7\$?!#e(B)

e\$B7k2L\$O0J2<\$N\$h\$&\$K\$J\$j\$^\$7\$?!#e(B
e\$B<c\$7\$3\$NDxEY\$N:9\$G\$"\$l\$P!"A[Dj\$NHO0OFb\$G\$9!#e(B
quxe\$B\$,CY\$\$\$N\$O8!:w\$G\$O\$J\$/!"Kh2se(BRegexp.newe\$B\$7\$F\$\$\$ke(B
e\$BItJ,\$,860x\$G\$9!#\$3\$l\$O!“54<V\$N\$[\$&\$,:GE,2=>pJs\$Ne(B
e\$B<[email protected]\$K;~4V\$r\$+\$1\$F\$\$\$k\$N\$G!”@55,I=8=\$N:[email protected];~4V\$,e(B
e\$BD9\$/\$J\$k\$?\$a\$G\$9!#e(B

“qux new empty"e\$B\$He(B"qux new"e\$B\$N;~4V\$NHf3S\$+\$ie(B
e\$BBg;([email protected]\$C\$F!“e(BRegexpe\$B%*%V%8%’%/%[email protected]@.A4BN\$Ne(B
e\$BLse(B15%e\$B\$Oe(Brubye\$B<+?H\$N=hM};~4V\$G!”;D\$j\$,54<V\$N=hM};~4Ve(B
[email protected]\$H;W\$\$\$^\$9!#\$J\$N\$G!”\$3\$NDxEY\$NC;\$\$%Q%?!<%s\$Ne(B
e\$B\$H\$-\$K\$O!“LdBj\$J\$\$%l%Y%[email protected]\$H;W\$\$\$^\$9!#e(B
e\$B\$G\$bD9\$\$%Q%?!<%s\$N\$H\$-\$,5\$\$K\$J\$k\$N\$G!”;~4V\$r8:\$i\$;\$ke(B
e\$BItJ,\$,\$"\$k\$+\$I\$&\$+!"0l1~8!F\$\$O\$7\$F\$_\$^\$9!#e(B

ruby 1.8.4 (2006-03-01) [i686-linux]
user system total real
foo 1.090000 0.100000 1.190000 ( 1.203012)
bar 0.980000 0.040000 1.020000 ( 1.023069)
qux new empty 1.570000 0.340000 1.910000 ( 1.943319)
qux new 2.920000 1.870000 4.790000 ( 14.304892)
qux search 0.470000 0.020000 0.490000 ( 1.712328)
qux 3.150000 0.420000 3.570000 ( 21.151487)

ruby 1.9.0 (2006-03-01) [i686-linux]
user system total real
foo 0.980000 0.110000 1.090000 ( 1.101956)
bar 0.890000 0.040000 0.930000 ( 0.944269)
qux new empty 1.330000 0.340000 1.670000 ( 1.684494)
qux new 6.240000 0.050000 6.290000 ( 6.378824)
qux search 0.460000 0.000000 0.460000 ( 0.463881)
qux 6.830000 0.010000 6.840000 ( 6.937301)

ruby 1.8.4 (2005-12-24) [i386-cygwin]
user system total real
foo 1.051000 0.010000 1.061000 ( 1.061000)
bar 0.981000 0.000000 0.981000 ( 0.991000)
qux new empty 2.053000 0.030000 2.083000 ( 2.083000)
qux new 3.285000 0.280000 3.565000 ( 11.176000)
qux search 0.341000 0.000000 0.341000 ( 0.360000)
qux 3.595000 0.260000 3.855000 ( 14.581000)

ruby 1.9.0 (2006-04-08) [i386-cygwin]
user system total real
foo 1.041000 0.000000 1.041000 ( 1.061000)
bar 0.961000 0.000000 0.961000 ( 0.961000)
qux new empty 1.242000 0.030000 1.272000 ( 1.272000)
qux new 4.997000 0.020000 5.017000 ( 5.017000)
qux search 0.350000 0.000000 0.350000 ( 0.360000)
qux 5.238000 0.000000 5.238000 ( 5.278000)

e\$B>.Gwe(B

@re = /^\w±\w+\$/ # Some random expression
def foo(str)
str =~ @re
end

def bar(str)
str =~ /^\w±\w+\$/
end

def qux(str)
str =~ Regexp.new("/^\w±\w+\$/")
end

def qux_new(str)
Regexp.new("/^\w±\w+\$/")
end

def qux_new_empty(str)
Regexp.new("")
end

def qux_search(str)
str =~ //^\w±\w+\$//
end

require ‘benchmark’
include Benchmark

N = 300_000

bm(16) do |test|
GC.disable

test.report(“foo”) do
N.times {foo(“abc-xyz”)}
end

GC.enable
GC.start
GC.disable

test.report(“bar”) do
N.times {bar(“abc-xyz”)}
end

GC.enable
GC.start
GC.disable

test.report(“qux new empty”) do
N.times {qux_new_empty(“abc-xyz”)}
end

GC.enable
GC.start
GC.disable

test.report(“qux new”) do
N.times {qux_new(“abc-xyz”)}
end

GC.enable
GC.start
GC.disable

test.report(“qux search”) do
N.times {qux_search(“abc-xyz”)}
end

GC.enable
GC.start
GC.disable

test.report(“qux”) do
N.times {qux(“abc-xyz”)}
end
end

e\$B\$^\$D\$b\$He(B e\$B\$f\$-\$R\$m\$G\$9e(B

In message “Re: [ruby-dev:28561] Re: e\$B54<V%Q%U%)!<%^%s%9e(B”
on Thu, 13 Apr 2006 23:11:13 +0900, “K.Kosako” [email protected]
writes:

|quxe\$B\$,CY\$\$\$N\$O8!:w\$G\$O\$J\$/!"Kh2se(BRegexp.newe\$B\$7\$F\$\$\$ke(B
|e\$BItJ,\$,860x\$G\$9!#\$3\$l\$O!“54<V\$N\$[\$&\$,:GE,2=>pJs\$Ne(B
|e\$B<[email protected]\$K;~4V\$r\$+\$1\$F\$\$\$k\$N\$G!”@55,I=8=\$N:[email protected];~4V\$,e(B
|e\$BD9\$/\$J\$k\$?\$a\$G\$9!#e(B

e\$B\$J\$k\$[\$I!"\$3\$N>pJs\$OEA\$(\$F\$*\$-\$^\$9!#e(B

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.