$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<hF@$K;~4V$r$+$1$F$$$k$N$G!”@55,I=8=$N:n@.;~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;(GD$K8@$C$F!“e(BRegexpe$B%*%V%8%’%/%H$N@[email protected]$Ne(B
e$BLse(B15%e$B$Oe(Brubye$B<+?H$N=hM};~4V$G!”;D$j$,54<V$N=hM};~4Ve(B
e$B$@$H;W$$$^$9!#$J$N$G!”$3$NDxEY$NC;$$%Q%?!<%s$Ne(B
e$B$H$-$K$O!“LdBj$J$$%l%Y%k$@$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<hF@$K;~4V$r$+$1$F$$$k$N$G!”@55,I=8=$N:n@.;~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