зеркало из https://github.com/github/ruby.git
* doc/re.rdoc (Performance): Replaced incorrect example of reducing
backtracking through anchoring with reduced backtracking through a range. [ruby-trunk - Bug #6525] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
5c56ae7f81
Коммит
5f85fcc11f
|
@ -1,3 +1,9 @@
|
|||
Sat Jun 2 07:04:48 2012 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* doc/re.rdoc (Performance): Replaced incorrect example of reducing
|
||||
backtracking through anchoring with reduced backtracking through a
|
||||
range. [ruby-trunk - Bug #6525]
|
||||
|
||||
Sat Jun 2 06:34:15 2012 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* doc/re.rdoc (Performance): Removed useless sample output from final
|
||||
|
|
|
@ -640,9 +640,10 @@ repeatedly so as to satisfy as many of the optional matches as it can
|
|||
while still matching the mandatory 29. It is plain to us that none of the
|
||||
optional matches can succeed, but this fact unfortunately eludes Ruby.
|
||||
|
||||
One approach for improving performance is to anchor the match to the
|
||||
beginning of the string, thus significantly reducing the amount of
|
||||
backtracking needed.
|
||||
The best way to improve performance is to significantly reduce the amount of
|
||||
backtracking needed. For this case, instead of individually matching 29
|
||||
optional <i>a</i>s, a range of optional <i>a</i>s can be matched all at once
|
||||
with <i>a{0,29}</i>:
|
||||
|
||||
Regexp.new('\A' 'a?' * 29 + 'a' * 29) =~ 'a' * 29
|
||||
Regexp.new('a{0,29}' + 'a' * 29) =~ 'a' * 29
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче