diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-12-24 23:50:37 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-12-24 23:50:37 +0000 |
commit | aa93c62e3cc2bb158b66489cd23e3f90ddb826e7 (patch) | |
tree | 161bab211d4e026e06961afbddb2e20764f6d175 /lib/uri/generic.rb | |
parent | 007c4dbe8422727ac85d6543cda186e344692caf (diff) |
lib/uri: performance improvements [misc #10628]
* lib/uri/generic.rb (split_userinfo): fstring for 1-byte split
(set_port): reduce bytecode size
(check_path): reduce garbage via opt_str_freeze
(query=): ditto
(fragment=): ditto
[misc #10628]
* lib/uri/rfc3986_parser.rb (regexp): cache as attr
(initialize): setup and freeze regexp attr once
(split): reduce bytecode size, use opt_str_freeze
(parse): minor bytecode and garbage reduction
(default_regexp): rename for initialize
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/uri/generic.rb')
-rw-r--r-- | lib/uri/generic.rb | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb index bacd90382d..5c134e5924 100644 --- a/lib/uri/generic.rb +++ b/lib/uri/generic.rb @@ -543,7 +543,7 @@ module URI # if properly formatted as 'user:password' def split_userinfo(ui) return nil, nil unless ui - user, password = ui.split(/:/, 2) + user, password = ui.split(':'.freeze, 2) return user, password end @@ -695,13 +695,7 @@ module URI # see also URI::Generic.port= # def set_port(v) - unless !v || v.kind_of?(Fixnum) - if v.empty? - v = nil - else - v = v.to_i - end - end + v = v.empty? ? nil : v.to_i unless !v || v.kind_of?(Fixnum) @port = v end protected :set_port @@ -768,13 +762,14 @@ module URI # If scheme is ftp, path may be relative. # See RFC 1738 section 3.2.2, and RFC 2396. - if @scheme && @scheme != "ftp" - if v && v != '' && parser.regexp[:ABS_PATH] !~ v + if @scheme && @scheme != "ftp".freeze + if v && v != ''.freeze && parser.regexp[:ABS_PATH] !~ v raise InvalidComponentError, "bad component(expected absolute path component): #{v}" end else - if v && v != '' && parser.regexp[:ABS_PATH] !~ v && parser.regexp[:REL_PATH] !~ v + if v && v != ''.freeze && parser.regexp[:ABS_PATH] !~ v && + parser.regexp[:REL_PATH] !~ v raise InvalidComponentError, "bad component(expected relative path component): #{v}" end @@ -849,7 +844,7 @@ module URI x = v.to_str v = x.dup if x.equal? v v.encode!(Encoding::UTF_8) rescue nil - v.delete!("\t\r\n") + v.delete!("\t\r\n".freeze) v.force_encoding(Encoding::ASCII_8BIT) v.gsub!(/(?!%\h\h|[!$-&(-;=?-_a-~])./n.freeze){'%%%02X'.freeze % $&.ord} v.force_encoding(Encoding::US_ASCII) @@ -939,9 +934,9 @@ module URI x = v.to_str v = x.dup if x.equal? v v.encode!(Encoding::UTF_8) rescue nil - v.delete!("\t\r\n") + v.delete!("\t\r\n".freeze) v.force_encoding(Encoding::ASCII_8BIT) - v.gsub!(/(?!%\h\h|[!-~])./n){'%%%02X' % $&.ord} + v.gsub!(/(?!%\h\h|[!-~])./n){'%%%02X'.freeze % $&.ord} v.force_encoding(Encoding::US_ASCII) @fragment = v end |