Skip to content

Instantly share code, notes, and snippets.

@znz
Created January 23, 2017 15:24
Show Gist options
  • Save znz/f3f1bbbec5fea2b608d2cc853bdd2fb9 to your computer and use it in GitHub Desktop.
Save znz/f3f1bbbec5fea2b608d2cc853bdd2fb9 to your computer and use it in GitHub Desktop.
ruby の正規表現の ^$ と \A\z の速度比較
require 'benchmark'
Benchmark.bmbm do |x|
n = 1000000
x.report('^$ 0 ') { n.times { 0.class.to_s =~ /^(Integer|Fixnum|FalseClass|TrueClass|NilClass)$/ } }
x.report('\A\z 0 ') { n.times { 0.class.to_s =~ /\A(Integer|Fixnum|FalseClass|TrueClass|NilClass)\z/ } }
x.report('^$ nil') { n.times { nil.class.to_s =~ /^(Integer|Fixnum|FalseClass|TrueClass|NilClass)$/ } }
x.report('\A\z nil') { n.times { nil.class.to_s =~ /\A(Integer|Fixnum|FalseClass|TrueClass|NilClass)\z/ } }
x.report('^$ x ') { n.times { x.class.to_s =~ /^(Integer|Fixnum|FalseClass|TrueClass|NilClass)$/ } }
x.report('\A\z x ') { n.times { x.class.to_s =~ /\A(Integer|Fixnum|FalseClass|TrueClass|NilClass)\z/ } }
end
Rehearsal --------------------------------------------
^$ 0 0.420000 0.010000 0.430000 ( 0.431502)
\A\z 0 0.430000 0.000000 0.430000 ( 0.431883)
^$ nil 0.480000 0.000000 0.480000 ( 0.478276)
\A\z nil 0.470000 0.000000 0.470000 ( 0.470363)
^$ x 0.420000 0.000000 0.420000 ( 0.419455)
\A\z x 0.390000 0.000000 0.390000 ( 0.389344)
----------------------------------- total: 2.620000sec
user system total real
^$ 0 0.410000 0.010000 0.420000 ( 0.422920)
\A\z 0 0.400000 0.000000 0.400000 ( 0.402938)
^$ nil 0.440000 0.010000 0.450000 ( 0.459061)
\A\z nil 0.460000 0.000000 0.460000 ( 0.459551)
^$ x 0.420000 0.000000 0.420000 ( 0.421417)
\A\z x 0.400000 0.000000 0.400000 ( 0.400294)
Rehearsal --------------------------------------------
^$ 0 0.410000 0.000000 0.410000 ( 0.416605)
\A\z 0 0.380000 0.000000 0.380000 ( 0.379546)
^$ nil 0.420000 0.000000 0.420000 ( 0.423058)
\A\z nil 0.420000 0.000000 0.420000 ( 0.422661)
^$ x 0.470000 0.000000 0.470000 ( 0.463877)
\A\z x 0.420000 0.000000 0.420000 ( 0.426670)
----------------------------------- total: 2.520000sec
user system total real
^$ 0 0.380000 0.000000 0.380000 ( 0.379946)
\A\z 0 0.390000 0.000000 0.390000 ( 0.392950)
^$ nil 0.410000 0.000000 0.410000 ( 0.415787)
\A\z nil 0.420000 0.000000 0.420000 ( 0.430581)
^$ x 0.440000 0.000000 0.440000 ( 0.445779)
\A\z x 0.430000 0.000000 0.430000 ( 0.425383)
Rehearsal --------------------------------------------
^$ 0 0.400000 0.000000 0.400000 ( 0.399049)
\A\z 0 0.380000 0.000000 0.380000 ( 0.389624)
^$ nil 0.420000 0.000000 0.420000 ( 0.418071)
\A\z nil 0.430000 0.000000 0.430000 ( 0.438361)
^$ x 0.400000 0.000000 0.400000 ( 0.397920)
\A\z x 0.380000 0.000000 0.380000 ( 0.382451)
----------------------------------- total: 2.410000sec
user system total real
^$ 0 0.380000 0.010000 0.390000 ( 0.382801)
\A\z 0 0.370000 0.000000 0.370000 ( 0.373419)
^$ nil 0.420000 0.000000 0.420000 ( 0.416101)
\A\z nil 0.420000 0.000000 0.420000 ( 0.426962)
^$ x 0.400000 0.000000 0.400000 ( 0.404458)
\A\z x 0.370000 0.000000 0.370000 ( 0.371693)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment