Add Benchmarks for URLs
This MR adds a benchmark for NewURLBuilderFromRequest as well as one for the URLs built from the url builder returned from that function.
This will allow us to help evaluate improvements made to routing and pathing #226.
Sample Output:
go test -test.bench=. github.com/docker/distribution/registry/api/v2/
goos: linux
goarch: amd64
pkg: github.com/docker/distribution/registry/api/v2
BenchmarkBuilderFromRequest/relative-16 1423 1399143 ns/op 699724 B/op 5371 allocs/op
BenchmarkBuilderFromRequest/absolute-16 1100 933586 ns/op 699751 B/op 5372 allocs/op
BenchmarkBuilderFromRequestURLs/test_base_url_relative-16 1789004 844 ns/op 208 B/op 4 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_relative-16 473587 3408 ns/op 712 B/op 11 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_n_query_parameter_relative-16 436351 4453 ns/op 1133 B/op 16 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_last_query_parameter_relative-16 195354 6048 ns/op 1214 B/op 18 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_n_and_last_query_parameters_relative-16 243248 5567 ns/op 1295 B/op 21 allocs/op
BenchmarkBuilderFromRequestURLs/test_manifest_url_tagged_ref_relative-16 290748 3891 ns/op 761 B/op 12 allocs/op
BenchmarkBuilderFromRequestURLs/test_manifest_url_bare_ref_relative-16 5872947 204 ns/op 64 B/op 2 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_url_relative-16 216915 5475 ns/op 891 B/op 12 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_url_relative-16 441688 3521 ns/op 711 B/op 11 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_url_with_digest_and_size_relative-16 287694 6569 ns/op 1724 B/op 23 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_chunk_url_relative-16 256227 4389 ns/op 807 B/op 12 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_chunk_url_with_digest_and_size_relative-16 180902 8427 ns/op 1819 B/op 24 allocs/op
BenchmarkBuilderFromRequestURLs/test_base_url_absolute-16 708855 1818 ns/op 456 B/op 10 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_absolute-16 290497 4505 ns/op 1166 B/op 18 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_n_query_parameter_absolute-16 356442 6739 ns/op 1586 B/op 23 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_last_query_parameter_absolute-16 189338 6611 ns/op 1603 B/op 24 allocs/op
BenchmarkBuilderFromRequestURLs/test_tags_url_with_n_and_last_query_parameters_absolute-16 173907 7410 ns/op 1683 B/op 27 allocs/op
BenchmarkBuilderFromRequestURLs/test_manifest_url_tagged_ref_absolute-16 324921 5093 ns/op 1216 B/op 19 allocs/op
BenchmarkBuilderFromRequestURLs/test_manifest_url_bare_ref_absolute-16 3813212 266 ns/op 64 B/op 2 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_url_absolute-16 188948 7868 ns/op 1459 B/op 19 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_url_absolute-16 301761 5281 ns/op 1197 B/op 18 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_url_with_digest_and_size_absolute-16 191409 9771 ns/op 2222 B/op 30 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_chunk_url_absolute-16 249175 6124 ns/op 1313 B/op 19 allocs/op
BenchmarkBuilderFromRequestURLs/build_blob_upload_chunk_url_with_digest_and_size_absolute-16 133707 10680 ns/op 2354 B/op 31 allocs/op
PASS
ok github.com/docker/distribution/registry/api/v2 48.250s
Edited by Hayley Swimelar