Make URI#hostname 86-89% and hostname= 55-154% faster
URI#hostname extends URI#host with IPv6 support. In URI, IPv6 address must have square brackets (e.g.
http://[2001:db8::1]), URI#hostname strips these characters out while URI#hostname= adds them if missing. There are three regular expressions to perform these tasks which can dramatically slow down performance. I am attaching a two-line patch and here is a benchmark: https://gist.github.com/lzap/24cbecb47daf29111350e41a24250922
Results are in the gist. A patch and a PR incoming.
Updated by lzap (Lukas Zapletal) about 2 months ago
- Description updated (diff)
- Subject changed from Make URI#hostname 18-20% and hostname= 31-156% faster to Make URI#hostname 86-89% and hostname= 55-154% faster
So I learned that URI is a separate rubygem, therefore I filed PR against https://github.com/ruby/uri/pull/12 and this RM issue is no longer necessary I guess. Please close.