Bug #8287

Regexp performance issue

Added by Justin Peal about 1 year ago. Updated 12 months ago.

[ruby-core:54424]
Status:Open
Priority:Normal
Assignee:Yui NARUSE
Category:core
Target version:-
ruby -v:ruby 1.9.3p374 (2013-01-15) [i386-mingw32] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN

Description

ADDRESS = # RFC-5322 : http://tools.ietf.org/html/rfc5322
/
(?
(?
(?
(?
(?
(?
#\g?
#\g+
#\g?
)
|
\g
)+
)
)?
(?
\g?
<
\g
>
\g?
)
)
|
(?
(?
(?
(?
(?:
(?:
(?
(
\g*
(?
\x0d \x0a
)
)?
(?
\x09 | \x20
)+
)?
(?
(
(?:
\g?
(?
(?
[\x21-\x27] | [\x2a-\x5b] | [\x5d-\x7e]
)
|
(?
\
(?:
(?
[\x21-\x7e]
)
|
\g
)
)
|
\g
)
)*
\g?
)
)
)+
\g?
)
|
\g
)?
(?
(?
[-\w!#$%&'+\/=?`{|}~]
)+
(?:
.
\g+
)

)
\g?
)
|
(?
\g?
(? " )
(?:
\g?
(?
(?
\x21 | [\x23-\x5b] | [\x5d-\x7e]
)
|
\g
)
)*
\g?
\g
\g?
)
)
@
(?
\g
|
(?
\g?
[
(
\g?
(?
[\x21-\x5a] | [\x5e-\x7e]
)
)*
\g?
]
\g?
)
)
)
)
|
(?
\g
:
(?
(?
\g
(?:
,
\g
)*
)
|
\g
)?
;
\g?
)
/x

puts "start = #{start = Time.now}"
puts 'dH3GFaWn5nqgxtYAiTyG@eu.tv'[ADDRESS]
puts "stop = #{stop = Time.now}"
puts "#{stop - start} seconds"

=begin
C:>err
start = 2013-04-18 12:34:02 +0800
dH3GFaWn5nqgxtYAiTyG@eu.tv
stop = 2013-04-18 12:34:04 +0800
1.662166 seconds

After uncomment line 9~11:

C:>err
start = 2013-04-18 12:34:14 +0800
dH3GFaWn5nqgxtYAiTyG@eu.tv
stop = 2013-04-18 12:34:14 +0800
0.003001 seconds
=end

History

#1 Updated by Koichi Sasada 12 months ago

  • Category set to core
  • Assignee set to Yui NARUSE

Also available in: Atom PDF