From c6b35d16a8d7058f71cf694f0087e9a2a11e9e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Fri, 14 Nov 2025 21:10:25 +0000 Subject: [PATCH 1/2] Add benchmarks for various Addressable URI operations We want to track the performance of common operations in the Addressable gem, such as parsing, normalization, component access, and modification. We heavily use the Addressable gem in our projects, so having benchmarks will help us monitor performance changes over time and ensure that updates to the gem or our codebase do not introduce regressions. --- benchmarks.yml | 18 ++++++++++++++++ benchmarks/addressable-equality/Gemfile | 5 +++++ benchmarks/addressable-equality/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-equality/benchmark.rb | 15 +++++++++++++ benchmarks/addressable-getters/Gemfile | 5 +++++ benchmarks/addressable-getters/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-getters/benchmark.rb | 21 +++++++++++++++++++ benchmarks/addressable-join/Gemfile | 5 +++++ benchmarks/addressable-join/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-join/benchmark.rb | 14 +++++++++++++ benchmarks/addressable-merge/Gemfile | 5 +++++ benchmarks/addressable-merge/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-merge/benchmark.rb | 16 ++++++++++++++ benchmarks/addressable-new/Gemfile | 5 +++++ benchmarks/addressable-new/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-new/benchmark.rb | 19 +++++++++++++++++ benchmarks/addressable-normalize/Gemfile | 5 +++++ benchmarks/addressable-normalize/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-normalize/benchmark.rb | 14 +++++++++++++ benchmarks/addressable-parse/Gemfile | 5 +++++ benchmarks/addressable-parse/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-parse/benchmark.rb | 18 ++++++++++++++++ benchmarks/addressable-setters/Gemfile | 5 +++++ benchmarks/addressable-setters/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-setters/benchmark.rb | 18 ++++++++++++++++ benchmarks/addressable-to-s/Gemfile | 5 +++++ benchmarks/addressable-to-s/Gemfile.lock | 16 ++++++++++++++ benchmarks/addressable-to-s/benchmark.rb | 16 ++++++++++++++ 28 files changed, 358 insertions(+) create mode 100644 benchmarks/addressable-equality/Gemfile create mode 100644 benchmarks/addressable-equality/Gemfile.lock create mode 100644 benchmarks/addressable-equality/benchmark.rb create mode 100644 benchmarks/addressable-getters/Gemfile create mode 100644 benchmarks/addressable-getters/Gemfile.lock create mode 100644 benchmarks/addressable-getters/benchmark.rb create mode 100644 benchmarks/addressable-join/Gemfile create mode 100644 benchmarks/addressable-join/Gemfile.lock create mode 100644 benchmarks/addressable-join/benchmark.rb create mode 100644 benchmarks/addressable-merge/Gemfile create mode 100644 benchmarks/addressable-merge/Gemfile.lock create mode 100644 benchmarks/addressable-merge/benchmark.rb create mode 100644 benchmarks/addressable-new/Gemfile create mode 100644 benchmarks/addressable-new/Gemfile.lock create mode 100644 benchmarks/addressable-new/benchmark.rb create mode 100644 benchmarks/addressable-normalize/Gemfile create mode 100644 benchmarks/addressable-normalize/Gemfile.lock create mode 100644 benchmarks/addressable-normalize/benchmark.rb create mode 100644 benchmarks/addressable-parse/Gemfile create mode 100644 benchmarks/addressable-parse/Gemfile.lock create mode 100644 benchmarks/addressable-parse/benchmark.rb create mode 100644 benchmarks/addressable-setters/Gemfile create mode 100644 benchmarks/addressable-setters/Gemfile.lock create mode 100644 benchmarks/addressable-setters/benchmark.rb create mode 100644 benchmarks/addressable-to-s/Gemfile create mode 100644 benchmarks/addressable-to-s/Gemfile.lock create mode 100644 benchmarks/addressable-to-s/benchmark.rb diff --git a/benchmarks.yml b/benchmarks.yml index a4fa9e07..cd388de9 100644 --- a/benchmarks.yml +++ b/benchmarks.yml @@ -51,6 +51,24 @@ shipit: # # Other Benchmarks # +addressable-equality: + desc: addressable URI equality comparison +addressable-getters: + desc: addressable URI component getters (scheme, host, port, path, query, fragment) +addressable-join: + desc: addressable URI joining/merging paths +addressable-merge: + desc: addressable URI merging options +addressable-new: + desc: addressable URI construction from hash +addressable-normalize: + desc: addressable URI normalization +addressable-parse: + desc: addressable URI parsing (simple and complex URIs) +addressable-setters: + desc: addressable URI component setters (scheme, host, path modification) +addressable-to-s: + desc: addressable URI to string conversion binarytrees: desc: binarytrees from the Computer Language Benchmarks Game. blurhash: diff --git a/benchmarks/addressable-equality/Gemfile b/benchmarks/addressable-equality/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-equality/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-equality/Gemfile.lock b/benchmarks/addressable-equality/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-equality/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-equality/benchmark.rb b/benchmarks/addressable-equality/benchmark.rb new file mode 100644 index 00000000..581ff5cf --- /dev/null +++ b/benchmarks/addressable-equality/benchmark.rb @@ -0,0 +1,15 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +run_benchmark(100) do + 100.times do + # URI equality comparison + uri1 = Addressable::URI.parse("http://example.com") + uri2 = Addressable::URI.parse("http://example.com:80/") + uri1 == uri2 + end +end diff --git a/benchmarks/addressable-getters/Gemfile b/benchmarks/addressable-getters/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-getters/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-getters/Gemfile.lock b/benchmarks/addressable-getters/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-getters/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-getters/benchmark.rb b/benchmarks/addressable-getters/benchmark.rb new file mode 100644 index 00000000..ab910df4 --- /dev/null +++ b/benchmarks/addressable-getters/benchmark.rb @@ -0,0 +1,21 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" + +run_benchmark(100) do + 100.times do + # Component access + uri = Addressable::URI.parse(COMPLEX_URI) + uri.scheme + uri.host + uri.port + uri.path + uri.query + uri.fragment + end +end diff --git a/benchmarks/addressable-join/Gemfile b/benchmarks/addressable-join/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-join/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-join/Gemfile.lock b/benchmarks/addressable-join/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-join/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-join/benchmark.rb b/benchmarks/addressable-join/benchmark.rb new file mode 100644 index 00000000..340d25a8 --- /dev/null +++ b/benchmarks/addressable-join/benchmark.rb @@ -0,0 +1,14 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +run_benchmark(100) do + 100.times do + # URI joining + base = Addressable::URI.parse("http://example.com/a/b/c") + base.join("../d") + end +end diff --git a/benchmarks/addressable-merge/Gemfile b/benchmarks/addressable-merge/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-merge/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-merge/Gemfile.lock b/benchmarks/addressable-merge/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-merge/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-merge/benchmark.rb b/benchmarks/addressable-merge/benchmark.rb new file mode 100644 index 00000000..05766a5d --- /dev/null +++ b/benchmarks/addressable-merge/benchmark.rb @@ -0,0 +1,16 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +SIMPLE_URI = "http://example.com/path" + +run_benchmark(100) do + 100.times do + # URI merging + uri = Addressable::URI.parse(SIMPLE_URI) + uri.merge(scheme: "https", port: 8080) + end +end diff --git a/benchmarks/addressable-new/Gemfile b/benchmarks/addressable-new/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-new/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-new/Gemfile.lock b/benchmarks/addressable-new/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-new/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-new/benchmark.rb b/benchmarks/addressable-new/benchmark.rb new file mode 100644 index 00000000..d036b387 --- /dev/null +++ b/benchmarks/addressable-new/benchmark.rb @@ -0,0 +1,19 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +run_benchmark(100) do + 100.times do + # URI construction from hash + Addressable::URI.new( + scheme: "https", + host: "example.com", + port: 443, + path: "/path", + query: "foo=bar" + ) + end +end diff --git a/benchmarks/addressable-normalize/Gemfile b/benchmarks/addressable-normalize/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-normalize/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-normalize/Gemfile.lock b/benchmarks/addressable-normalize/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-normalize/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-normalize/benchmark.rb b/benchmarks/addressable-normalize/benchmark.rb new file mode 100644 index 00000000..d38def2b --- /dev/null +++ b/benchmarks/addressable-normalize/benchmark.rb @@ -0,0 +1,14 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +run_benchmark(100) do + 100.times do + # URI normalization + uri = Addressable::URI.parse("HTTP://EXAMPLE.COM:80/path") + uri.normalize + end +end diff --git a/benchmarks/addressable-parse/Gemfile b/benchmarks/addressable-parse/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-parse/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-parse/Gemfile.lock b/benchmarks/addressable-parse/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-parse/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-parse/benchmark.rb b/benchmarks/addressable-parse/benchmark.rb new file mode 100644 index 00000000..07208db8 --- /dev/null +++ b/benchmarks/addressable-parse/benchmark.rb @@ -0,0 +1,18 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +# Sample URIs for testing +SIMPLE_URI = "http://example.com/path" +COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" + +run_benchmark(100) do + 100.times do + # URI parsing - simple and complex + Addressable::URI.parse(SIMPLE_URI) + Addressable::URI.parse(COMPLEX_URI) + end +end diff --git a/benchmarks/addressable-setters/Gemfile b/benchmarks/addressable-setters/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-setters/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-setters/Gemfile.lock b/benchmarks/addressable-setters/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-setters/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-setters/benchmark.rb b/benchmarks/addressable-setters/benchmark.rb new file mode 100644 index 00000000..4354be50 --- /dev/null +++ b/benchmarks/addressable-setters/benchmark.rb @@ -0,0 +1,18 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +SIMPLE_URI = "http://example.com/path" + +run_benchmark(100) do + 100.times do + # Component modification + uri = Addressable::URI.parse(SIMPLE_URI) + uri.scheme = "https" + uri.host = "newhost.com" + uri.path = "/newpath" + end +end diff --git a/benchmarks/addressable-to-s/Gemfile b/benchmarks/addressable-to-s/Gemfile new file mode 100644 index 00000000..55401701 --- /dev/null +++ b/benchmarks/addressable-to-s/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "addressable" diff --git a/benchmarks/addressable-to-s/Gemfile.lock b/benchmarks/addressable-to-s/Gemfile.lock new file mode 100644 index 00000000..75a6aa88 --- /dev/null +++ b/benchmarks/addressable-to-s/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + public_suffix (6.0.2) + +PLATFORMS + aarch64-linux + ruby + +DEPENDENCIES + addressable + +BUNDLED WITH + 2.6.9 diff --git a/benchmarks/addressable-to-s/benchmark.rb b/benchmarks/addressable-to-s/benchmark.rb new file mode 100644 index 00000000..37a0c2d3 --- /dev/null +++ b/benchmarks/addressable-to-s/benchmark.rb @@ -0,0 +1,16 @@ +require_relative "../../harness/loader" + +Dir.chdir __dir__ +use_gemfile + +require "addressable/uri" + +COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" + +run_benchmark(100) do + 100.times do + # URI to string conversion + uri = Addressable::URI.parse(COMPLEX_URI) + uri.to_s + end +end From cc305e088d1118760d92d62b1f0afcb34908cc9c Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Mon, 17 Nov 2025 17:44:51 -0500 Subject: [PATCH 2/2] Run benchmarks 10k times, not 100 --- benchmarks/addressable-equality/benchmark.rb | 2 +- benchmarks/addressable-getters/benchmark.rb | 2 +- benchmarks/addressable-join/benchmark.rb | 2 +- benchmarks/addressable-merge/benchmark.rb | 2 +- benchmarks/addressable-new/benchmark.rb | 2 +- benchmarks/addressable-normalize/benchmark.rb | 2 +- benchmarks/addressable-parse/benchmark.rb | 2 +- benchmarks/addressable-setters/benchmark.rb | 2 +- benchmarks/addressable-to-s/benchmark.rb | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/benchmarks/addressable-equality/benchmark.rb b/benchmarks/addressable-equality/benchmark.rb index 581ff5cf..ca48dffe 100644 --- a/benchmarks/addressable-equality/benchmark.rb +++ b/benchmarks/addressable-equality/benchmark.rb @@ -6,7 +6,7 @@ require "addressable/uri" run_benchmark(100) do - 100.times do + 10000.times do # URI equality comparison uri1 = Addressable::URI.parse("http://example.com") uri2 = Addressable::URI.parse("http://example.com:80/") diff --git a/benchmarks/addressable-getters/benchmark.rb b/benchmarks/addressable-getters/benchmark.rb index ab910df4..301439f2 100644 --- a/benchmarks/addressable-getters/benchmark.rb +++ b/benchmarks/addressable-getters/benchmark.rb @@ -8,7 +8,7 @@ COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" run_benchmark(100) do - 100.times do + 10000.times do # Component access uri = Addressable::URI.parse(COMPLEX_URI) uri.scheme diff --git a/benchmarks/addressable-join/benchmark.rb b/benchmarks/addressable-join/benchmark.rb index 340d25a8..a4df7b39 100644 --- a/benchmarks/addressable-join/benchmark.rb +++ b/benchmarks/addressable-join/benchmark.rb @@ -6,7 +6,7 @@ require "addressable/uri" run_benchmark(100) do - 100.times do + 10000.times do # URI joining base = Addressable::URI.parse("http://example.com/a/b/c") base.join("../d") diff --git a/benchmarks/addressable-merge/benchmark.rb b/benchmarks/addressable-merge/benchmark.rb index 05766a5d..39c07f2d 100644 --- a/benchmarks/addressable-merge/benchmark.rb +++ b/benchmarks/addressable-merge/benchmark.rb @@ -8,7 +8,7 @@ SIMPLE_URI = "http://example.com/path" run_benchmark(100) do - 100.times do + 10000.times do # URI merging uri = Addressable::URI.parse(SIMPLE_URI) uri.merge(scheme: "https", port: 8080) diff --git a/benchmarks/addressable-new/benchmark.rb b/benchmarks/addressable-new/benchmark.rb index d036b387..5fd9731e 100644 --- a/benchmarks/addressable-new/benchmark.rb +++ b/benchmarks/addressable-new/benchmark.rb @@ -6,7 +6,7 @@ require "addressable/uri" run_benchmark(100) do - 100.times do + 10000.times do # URI construction from hash Addressable::URI.new( scheme: "https", diff --git a/benchmarks/addressable-normalize/benchmark.rb b/benchmarks/addressable-normalize/benchmark.rb index d38def2b..121a8ad0 100644 --- a/benchmarks/addressable-normalize/benchmark.rb +++ b/benchmarks/addressable-normalize/benchmark.rb @@ -6,7 +6,7 @@ require "addressable/uri" run_benchmark(100) do - 100.times do + 10000.times do # URI normalization uri = Addressable::URI.parse("HTTP://EXAMPLE.COM:80/path") uri.normalize diff --git a/benchmarks/addressable-parse/benchmark.rb b/benchmarks/addressable-parse/benchmark.rb index 07208db8..02d29a83 100644 --- a/benchmarks/addressable-parse/benchmark.rb +++ b/benchmarks/addressable-parse/benchmark.rb @@ -10,7 +10,7 @@ COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" run_benchmark(100) do - 100.times do + 10000.times do # URI parsing - simple and complex Addressable::URI.parse(SIMPLE_URI) Addressable::URI.parse(COMPLEX_URI) diff --git a/benchmarks/addressable-setters/benchmark.rb b/benchmarks/addressable-setters/benchmark.rb index 4354be50..41ee88b3 100644 --- a/benchmarks/addressable-setters/benchmark.rb +++ b/benchmarks/addressable-setters/benchmark.rb @@ -8,7 +8,7 @@ SIMPLE_URI = "http://example.com/path" run_benchmark(100) do - 100.times do + 10000.times do # Component modification uri = Addressable::URI.parse(SIMPLE_URI) uri.scheme = "https" diff --git a/benchmarks/addressable-to-s/benchmark.rb b/benchmarks/addressable-to-s/benchmark.rb index 37a0c2d3..355d931f 100644 --- a/benchmarks/addressable-to-s/benchmark.rb +++ b/benchmarks/addressable-to-s/benchmark.rb @@ -8,7 +8,7 @@ COMPLEX_URI = "https://user:pass@example.com:8080/path/to/resource?query=value&foo=bar#fragment" run_benchmark(100) do - 100.times do + 10000.times do # URI to string conversion uri = Addressable::URI.parse(COMPLEX_URI) uri.to_s