radius-spec 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +28 -0
- data/.github/workflows/reviewdog.yml +21 -0
- data/.rubocop.yml +6 -6
- data/CHANGELOG.md +29 -4
- data/Gemfile +1 -3
- data/README.md +5 -6
- data/benchmarks/call_vs_yield.rb +0 -2
- data/benchmarks/cover_vs_include.rb +2 -2
- data/benchmarks/format_string.rb +3 -3
- data/benchmarks/hash_each.rb +305 -0
- data/benchmarks/hash_merge.rb +1 -1
- data/benchmarks/hash_transform.rb +455 -0
- data/benchmarks/unfreeze_string.rb +0 -2
- data/common_rubocop.yml +54 -41
- data/common_rubocop_rails.yml +33 -9
- data/lib/radius/spec/model_factory.rb +0 -2
- data/lib/radius/spec/vcr.rb +0 -2
- data/lib/radius/spec/version.rb +1 -1
- data/radius-spec.gemspec +6 -6
- metadata +12 -10
- data/.travis.yml +0 -15
- data/bin/ci-code-review +0 -28
    
        data/benchmarks/hash_merge.rb
    CHANGED
    
    
| @@ -0,0 +1,455 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # Run from the command line: bundle exec ruby benchmarks/hash_merge.rb
         | 
| 4 | 
            +
            require_relative 'bm_setup'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            display_benchmark_header
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # rubocop:disable Style/HashTransformKeys
         | 
| 9 | 
            +
            # Bad per Rubocop
         | 
| 10 | 
            +
            def hash_transform_key_each_with_object(hash)
         | 
| 11 | 
            +
              hash.each_with_object({}) { |(k, v), h| h[k + 100] = v }
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            # Bad per Rubocop
         | 
| 15 | 
            +
            def hash_transform_key_hash_collect(hash)
         | 
| 16 | 
            +
              Hash[hash.collect { |k, v| [k + 100, v] }]
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            # Bad per Rubocop
         | 
| 20 | 
            +
            def hash_transform_key_map_to_h(hash)
         | 
| 21 | 
            +
              hash.map { |k, v| [k + 100, v] }.to_h
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            # Bad per Rubocop
         | 
| 25 | 
            +
            def hash_transform_key_to_h_block(hash)
         | 
| 26 | 
            +
              hash.to_h { |k, v| [k + 100, v] }
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            # Good per Rubocop
         | 
| 30 | 
            +
            def hash_transform_keys(hash)
         | 
| 31 | 
            +
              hash.transform_keys { |k| k + 100 }
         | 
| 32 | 
            +
            end
         | 
| 33 | 
            +
            # rubocop:enable Style/HashTransformKeys
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            [
         | 
| 36 | 
            +
              [],
         | 
| 37 | 
            +
              (1..5),
         | 
| 38 | 
            +
              (1..10),
         | 
| 39 | 
            +
              (1..20),
         | 
| 40 | 
            +
              (1..100),
         | 
| 41 | 
            +
              (1..500),
         | 
| 42 | 
            +
            ].each do |data|
         | 
| 43 | 
            +
              test_hash = data.zip(data).to_h
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              section "Hash transform keys (size=#{data.size})" do |bench|
         | 
| 46 | 
            +
                bench.report("each_with_object") do
         | 
| 47 | 
            +
                  hash_transform_key_each_with_object(test_hash)
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                bench.report("collect.Hash") do
         | 
| 51 | 
            +
                  hash_transform_key_hash_collect(test_hash)
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                bench.report("map.to_h") do
         | 
| 55 | 
            +
                  hash_transform_key_map_to_h(test_hash)
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                bench.report("to_h block") do
         | 
| 59 | 
            +
                  hash_transform_key_to_h_block(test_hash)
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                bench.report("transform_keys") do
         | 
| 63 | 
            +
                  hash_transform_keys(test_hash)
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
            end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            # rubocop:disable Style/HashTransformValues
         | 
| 69 | 
            +
            # Bad per Rubocop
         | 
| 70 | 
            +
            def hash_transform_value_each_with_object(hash)
         | 
| 71 | 
            +
              hash.each_with_object({}) { |(k, v), h| h[k] = v + 100 }
         | 
| 72 | 
            +
            end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            # Bad per Rubocop
         | 
| 75 | 
            +
            def hash_transform_value_hash_collect(hash)
         | 
| 76 | 
            +
              Hash[hash.collect { |k, v| [k, v + 100] }]
         | 
| 77 | 
            +
            end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            # Bad per Rubocop
         | 
| 80 | 
            +
            def hash_transform_value_map_to_h(hash)
         | 
| 81 | 
            +
              hash.map { |k, v| [k, v + 100] }.to_h
         | 
| 82 | 
            +
            end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            # Bad per Rubocop
         | 
| 85 | 
            +
            def hash_transform_value_to_h_block(hash)
         | 
| 86 | 
            +
              hash.to_h { |k, v| [k, v + 100] }
         | 
| 87 | 
            +
            end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            # Good per Rubocop
         | 
| 90 | 
            +
            def hash_transform_values(hash)
         | 
| 91 | 
            +
              hash.transform_values { |v| v + 100 }
         | 
| 92 | 
            +
            end
         | 
| 93 | 
            +
            # rubocop:enable Style/HashTransformValues
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            [
         | 
| 96 | 
            +
              [],
         | 
| 97 | 
            +
              (1..5),
         | 
| 98 | 
            +
              (1..10),
         | 
| 99 | 
            +
              (1..20),
         | 
| 100 | 
            +
              (1..100),
         | 
| 101 | 
            +
              (1..500),
         | 
| 102 | 
            +
            ].each do |data|
         | 
| 103 | 
            +
              test_hash = data.zip(data).to_h
         | 
| 104 | 
            +
             | 
| 105 | 
            +
              section "Hash value enumeration (size=#{data.size})" do |bench|
         | 
| 106 | 
            +
                bench.report("each_with_object") do
         | 
| 107 | 
            +
                  hash_transform_value_each_with_object(test_hash)
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                bench.report("collect.Hash") do
         | 
| 111 | 
            +
                  hash_transform_value_hash_collect(test_hash)
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                bench.report("map.to_h") do
         | 
| 115 | 
            +
                  hash_transform_value_map_to_h(test_hash)
         | 
| 116 | 
            +
                end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                bench.report("to_h block") do
         | 
| 119 | 
            +
                  hash_transform_value_to_h_block(test_hash)
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                bench.report("transform_values") do
         | 
| 123 | 
            +
                  hash_transform_values(test_hash)
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
              end
         | 
| 126 | 
            +
            end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            __END__
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            ### Environment
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            Heroku Performance-L Dyno
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
         | 
| 135 | 
            +
            GC Disabled: false
         | 
| 136 | 
            +
             | 
| 137 | 
            +
            ### Test Cases
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            These benchmarks confirm that regardless of the size of the hash, the
         | 
| 140 | 
            +
            `transform_xyz` variants are much faster than the alternatives. It's
         | 
| 141 | 
            +
            interesting to note that the performance difference for some of the variants
         | 
| 142 | 
            +
            decreases as the hash size increases. However, even with the largest hash the
         | 
| 143 | 
            +
            `transform_xyz` version is significantly faster.
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            #### Hash transform keys (size=0)
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            ```
         | 
| 148 | 
            +
            Warming up --------------------------------------
         | 
| 149 | 
            +
                each_with_object   538.673k i/100ms
         | 
| 150 | 
            +
                    collect.Hash   342.897k i/100ms
         | 
| 151 | 
            +
                        map.to_h   426.927k i/100ms
         | 
| 152 | 
            +
                      to_h block     1.043M i/100ms
         | 
| 153 | 
            +
                  transform_keys     1.083M i/100ms
         | 
| 154 | 
            +
            Calculating -------------------------------------
         | 
| 155 | 
            +
                each_with_object      5.396M (± 0.0%) i/s -     27.472M in   5.091587s
         | 
| 156 | 
            +
                    collect.Hash      3.434M (± 0.0%) i/s -     17.488M in   5.093257s
         | 
| 157 | 
            +
                        map.to_h      4.263M (± 0.0%) i/s -     21.346M in   5.007195s
         | 
| 158 | 
            +
                      to_h block     10.431M (± 0.0%) i/s -     52.164M in   5.000982s
         | 
| 159 | 
            +
                  transform_keys     10.821M (± 0.0%) i/s -     54.133M in   5.002821s
         | 
| 160 | 
            +
                               with 95.0% confidence
         | 
| 161 | 
            +
             | 
| 162 | 
            +
            Comparison:
         | 
| 163 | 
            +
                  transform_keys: 10820597.2 i/s
         | 
| 164 | 
            +
                      to_h block: 10430816.6 i/s - 1.04x  (± 0.00) slower
         | 
| 165 | 
            +
                each_with_object:  5395639.2 i/s - 2.01x  (± 0.00) slower
         | 
| 166 | 
            +
                        map.to_h:  4263178.7 i/s - 2.54x  (± 0.00) slower
         | 
| 167 | 
            +
                    collect.Hash:  3433510.5 i/s - 3.15x  (± 0.00) slower
         | 
| 168 | 
            +
                               with 95.0% confidence
         | 
| 169 | 
            +
            ```
         | 
| 170 | 
            +
             | 
| 171 | 
            +
            #### Hash transform keys (size=5)
         | 
| 172 | 
            +
             | 
| 173 | 
            +
            ```
         | 
| 174 | 
            +
            Warming up --------------------------------------
         | 
| 175 | 
            +
                each_with_object   101.033k i/100ms
         | 
| 176 | 
            +
                    collect.Hash    91.559k i/100ms
         | 
| 177 | 
            +
                        map.to_h    97.138k i/100ms
         | 
| 178 | 
            +
                      to_h block   144.964k i/100ms
         | 
| 179 | 
            +
                  transform_keys   236.915k i/100ms
         | 
| 180 | 
            +
            Calculating -------------------------------------
         | 
| 181 | 
            +
                each_with_object      1.009M (± 0.0%) i/s -      5.052M in   5.008941s
         | 
| 182 | 
            +
                    collect.Hash    914.359k (± 0.2%) i/s -      4.578M in   5.007666s
         | 
| 183 | 
            +
                        map.to_h    968.789k (± 0.0%) i/s -      4.857M in   5.013387s
         | 
| 184 | 
            +
                      to_h block      1.452M (± 0.0%) i/s -      7.393M in   5.091421s
         | 
| 185 | 
            +
                  transform_keys      2.371M (± 0.1%) i/s -     12.083M in   5.096820s
         | 
| 186 | 
            +
                               with 95.0% confidence
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            Comparison:
         | 
| 189 | 
            +
                  transform_keys:  2370806.9 i/s
         | 
| 190 | 
            +
                      to_h block:  1452082.9 i/s - 1.63x  (± 0.00) slower
         | 
| 191 | 
            +
                each_with_object:  1008530.1 i/s - 2.35x  (± 0.00) slower
         | 
| 192 | 
            +
                        map.to_h:   968788.7 i/s - 2.45x  (± 0.00) slower
         | 
| 193 | 
            +
                    collect.Hash:   914358.6 i/s - 2.59x  (± 0.01) slower
         | 
| 194 | 
            +
                               with 95.0% confidence
         | 
| 195 | 
            +
            ```
         | 
| 196 | 
            +
             | 
| 197 | 
            +
            #### Hash transform keys (size=10)
         | 
| 198 | 
            +
             | 
| 199 | 
            +
            ```
         | 
| 200 | 
            +
            Warming up --------------------------------------
         | 
| 201 | 
            +
                each_with_object    48.415k i/100ms
         | 
| 202 | 
            +
                    collect.Hash    49.273k i/100ms
         | 
| 203 | 
            +
                        map.to_h    54.155k i/100ms
         | 
| 204 | 
            +
                      to_h block    72.567k i/100ms
         | 
| 205 | 
            +
                  transform_keys    99.649k i/100ms
         | 
| 206 | 
            +
            Calculating -------------------------------------
         | 
| 207 | 
            +
                each_with_object    438.801k (± 0.2%) i/s -      2.227M in   5.075718s
         | 
| 208 | 
            +
                    collect.Hash    493.563k (± 0.1%) i/s -      2.513M in   5.091711s
         | 
| 209 | 
            +
                        map.to_h    550.742k (± 0.0%) i/s -      2.762M in   5.014922s
         | 
| 210 | 
            +
                      to_h block    725.526k (± 0.0%) i/s -      3.628M in   5.001047s
         | 
| 211 | 
            +
                  transform_keys    997.743k (± 0.4%) i/s -      5.082M in   5.094699s
         | 
| 212 | 
            +
                               with 95.0% confidence
         | 
| 213 | 
            +
             | 
| 214 | 
            +
            Comparison:
         | 
| 215 | 
            +
                  transform_keys:   997742.9 i/s
         | 
| 216 | 
            +
                      to_h block:   725525.6 i/s - 1.38x  (± 0.00) slower
         | 
| 217 | 
            +
                        map.to_h:   550741.9 i/s - 1.81x  (± 0.01) slower
         | 
| 218 | 
            +
                    collect.Hash:   493562.5 i/s - 2.02x  (± 0.01) slower
         | 
| 219 | 
            +
                each_with_object:   438801.5 i/s - 2.27x  (± 0.01) slower
         | 
| 220 | 
            +
                               with 95.0% confidence
         | 
| 221 | 
            +
            ```
         | 
| 222 | 
            +
             | 
| 223 | 
            +
            #### Hash transform keys (size=20)
         | 
| 224 | 
            +
             | 
| 225 | 
            +
            ```
         | 
| 226 | 
            +
            Warming up --------------------------------------
         | 
| 227 | 
            +
                each_with_object    27.891k i/100ms
         | 
| 228 | 
            +
                    collect.Hash    30.118k i/100ms
         | 
| 229 | 
            +
                        map.to_h    31.586k i/100ms
         | 
| 230 | 
            +
                      to_h block    41.472k i/100ms
         | 
| 231 | 
            +
                  transform_keys    56.874k i/100ms
         | 
| 232 | 
            +
            Calculating -------------------------------------
         | 
| 233 | 
            +
                each_with_object    259.309k (± 0.2%) i/s -      1.311M in   5.055247s
         | 
| 234 | 
            +
                    collect.Hash    301.677k (± 0.0%) i/s -      1.536M in   5.091598s
         | 
| 235 | 
            +
                        map.to_h    316.764k (± 0.0%) i/s -      1.611M in   5.085459s
         | 
| 236 | 
            +
                      to_h block    416.878k (± 0.0%) i/s -      2.115M in   5.073771s
         | 
| 237 | 
            +
                  transform_keys    566.454k (± 0.4%) i/s -      2.844M in   5.021314s
         | 
| 238 | 
            +
                               with 95.0% confidence
         | 
| 239 | 
            +
             | 
| 240 | 
            +
            Comparison:
         | 
| 241 | 
            +
                  transform_keys:   566453.6 i/s
         | 
| 242 | 
            +
                      to_h block:   416877.9 i/s - 1.36x  (± 0.01) slower
         | 
| 243 | 
            +
                        map.to_h:   316763.9 i/s - 1.79x  (± 0.01) slower
         | 
| 244 | 
            +
                    collect.Hash:   301677.3 i/s - 1.88x  (± 0.01) slower
         | 
| 245 | 
            +
                each_with_object:   259308.7 i/s - 2.18x  (± 0.01) slower
         | 
| 246 | 
            +
                               with 95.0% confidence
         | 
| 247 | 
            +
            ```
         | 
| 248 | 
            +
             | 
| 249 | 
            +
            #### Hash transform keys (size=100)
         | 
| 250 | 
            +
             | 
| 251 | 
            +
            ```
         | 
| 252 | 
            +
            Warming up --------------------------------------
         | 
| 253 | 
            +
                each_with_object     6.252k i/100ms
         | 
| 254 | 
            +
                    collect.Hash     6.684k i/100ms
         | 
| 255 | 
            +
                        map.to_h     7.193k i/100ms
         | 
| 256 | 
            +
                      to_h block     9.181k i/100ms
         | 
| 257 | 
            +
                  transform_keys    12.110k i/100ms
         | 
| 258 | 
            +
            Calculating -------------------------------------
         | 
| 259 | 
            +
                each_with_object     62.523k (± 0.0%) i/s -    318.852k in   5.099821s
         | 
| 260 | 
            +
                    collect.Hash     66.729k (± 0.0%) i/s -    334.200k in   5.008308s
         | 
| 261 | 
            +
                        map.to_h     71.711k (± 0.0%) i/s -    359.650k in   5.015342s
         | 
| 262 | 
            +
                      to_h block     91.347k (± 0.0%) i/s -    459.050k in   5.025450s
         | 
| 263 | 
            +
                  transform_keys    122.210k (± 0.1%) i/s -    617.610k in   5.053842s
         | 
| 264 | 
            +
                               with 95.0% confidence
         | 
| 265 | 
            +
             | 
| 266 | 
            +
            Comparison:
         | 
| 267 | 
            +
                  transform_keys:   122210.0 i/s
         | 
| 268 | 
            +
                      to_h block:    91347.2 i/s - 1.34x  (± 0.00) slower
         | 
| 269 | 
            +
                        map.to_h:    71710.5 i/s - 1.70x  (± 0.00) slower
         | 
| 270 | 
            +
                    collect.Hash:    66729.5 i/s - 1.83x  (± 0.00) slower
         | 
| 271 | 
            +
                each_with_object:    62522.6 i/s - 1.95x  (± 0.00) slower
         | 
| 272 | 
            +
                               with 95.0% confidence
         | 
| 273 | 
            +
            ```
         | 
| 274 | 
            +
             | 
| 275 | 
            +
            #### Hash transform keys (size=500)
         | 
| 276 | 
            +
             | 
| 277 | 
            +
            ```
         | 
| 278 | 
            +
            Warming up --------------------------------------
         | 
| 279 | 
            +
                each_with_object     1.309k i/100ms
         | 
| 280 | 
            +
                    collect.Hash     1.397k i/100ms
         | 
| 281 | 
            +
                        map.to_h     1.501k i/100ms
         | 
| 282 | 
            +
                      to_h block     1.881k i/100ms
         | 
| 283 | 
            +
                  transform_keys     2.564k i/100ms
         | 
| 284 | 
            +
            Calculating -------------------------------------
         | 
| 285 | 
            +
                each_with_object     13.113k (± 0.1%) i/s -     66.759k in   5.090832s
         | 
| 286 | 
            +
                    collect.Hash     13.971k (± 0.1%) i/s -     69.850k in   5.000147s
         | 
| 287 | 
            +
                        map.to_h     14.983k (± 0.0%) i/s -     75.050k in   5.009121s
         | 
| 288 | 
            +
                      to_h block     18.827k (± 0.0%) i/s -     95.931k in   5.095314s
         | 
| 289 | 
            +
                  transform_keys     26.712k (± 0.8%) i/s -    135.892k in   5.092990s
         | 
| 290 | 
            +
                               with 95.0% confidence
         | 
| 291 | 
            +
             | 
| 292 | 
            +
            Comparison:
         | 
| 293 | 
            +
                  transform_keys:    26711.7 i/s
         | 
| 294 | 
            +
                      to_h block:    18827.4 i/s - 1.42x  (± 0.01) slower
         | 
| 295 | 
            +
                        map.to_h:    14982.9 i/s - 1.78x  (± 0.01) slower
         | 
| 296 | 
            +
                    collect.Hash:    13970.7 i/s - 1.91x  (± 0.02) slower
         | 
| 297 | 
            +
                each_with_object:    13113.5 i/s - 2.04x  (± 0.02) slower
         | 
| 298 | 
            +
                               with 95.0% confidence
         | 
| 299 | 
            +
            ```
         | 
| 300 | 
            +
             | 
| 301 | 
            +
            #### Hash value enumeration (size=0)
         | 
| 302 | 
            +
             | 
| 303 | 
            +
            ```
         | 
| 304 | 
            +
            Warming up --------------------------------------
         | 
| 305 | 
            +
                each_with_object   536.283k i/100ms
         | 
| 306 | 
            +
                    collect.Hash   343.935k i/100ms
         | 
| 307 | 
            +
                        map.to_h   412.861k i/100ms
         | 
| 308 | 
            +
                      to_h block     1.006M i/100ms
         | 
| 309 | 
            +
                transform_values     1.034M i/100ms
         | 
| 310 | 
            +
            Calculating -------------------------------------
         | 
| 311 | 
            +
                each_with_object      5.354M (± 0.3%) i/s -     26.814M in   5.009608s
         | 
| 312 | 
            +
                    collect.Hash      3.438M (± 0.0%) i/s -     17.197M in   5.001856s
         | 
| 313 | 
            +
                        map.to_h      4.129M (± 0.0%) i/s -     20.643M in   4.999982s
         | 
| 314 | 
            +
                      to_h block      9.850M (± 0.0%) i/s -     49.315M in   5.006595s
         | 
| 315 | 
            +
                transform_values     10.253M (± 0.0%) i/s -     51.721M in   5.044573s
         | 
| 316 | 
            +
                               with 95.0% confidence
         | 
| 317 | 
            +
             | 
| 318 | 
            +
            Comparison:
         | 
| 319 | 
            +
                transform_values: 10252746.8 i/s
         | 
| 320 | 
            +
                      to_h block:  9850031.5 i/s - 1.04x  (± 0.00) slower
         | 
| 321 | 
            +
                each_with_object:  5353850.7 i/s - 1.92x  (± 0.01) slower
         | 
| 322 | 
            +
                        map.to_h:  4128725.3 i/s - 2.48x  (± 0.00) slower
         | 
| 323 | 
            +
                    collect.Hash:  3438102.9 i/s - 2.98x  (± 0.00) slower
         | 
| 324 | 
            +
                               with 95.0% confidence
         | 
| 325 | 
            +
            ```
         | 
| 326 | 
            +
             | 
| 327 | 
            +
            #### Hash value enumeration (size=5)
         | 
| 328 | 
            +
             | 
| 329 | 
            +
            ```
         | 
| 330 | 
            +
            Warming up --------------------------------------
         | 
| 331 | 
            +
                each_with_object   101.174k i/100ms
         | 
| 332 | 
            +
                    collect.Hash    91.846k i/100ms
         | 
| 333 | 
            +
                        map.to_h    96.742k i/100ms
         | 
| 334 | 
            +
                      to_h block   144.714k i/100ms
         | 
| 335 | 
            +
                transform_values   334.829k i/100ms
         | 
| 336 | 
            +
            Calculating -------------------------------------
         | 
| 337 | 
            +
                each_with_object      1.011M (± 0.0%) i/s -      5.059M in   5.002511s
         | 
| 338 | 
            +
                    collect.Hash    916.962k (± 0.0%) i/s -      4.592M in   5.008221s
         | 
| 339 | 
            +
                        map.to_h    969.007k (± 0.0%) i/s -      4.934M in   5.091657s
         | 
| 340 | 
            +
                      to_h block      1.447M (± 0.0%) i/s -      7.236M in   5.000091s
         | 
| 341 | 
            +
                transform_values      3.356M (± 0.1%) i/s -     17.076M in   5.089207s
         | 
| 342 | 
            +
                               with 95.0% confidence
         | 
| 343 | 
            +
             | 
| 344 | 
            +
            Comparison:
         | 
| 345 | 
            +
                transform_values:  3355662.6 i/s
         | 
| 346 | 
            +
                      to_h block:  1447114.5 i/s - 2.32x  (± 0.00) slower
         | 
| 347 | 
            +
                each_with_object:  1011242.1 i/s - 3.32x  (± 0.00) slower
         | 
| 348 | 
            +
                        map.to_h:   969007.2 i/s - 3.46x  (± 0.00) slower
         | 
| 349 | 
            +
                    collect.Hash:   916962.3 i/s - 3.66x  (± 0.00) slower
         | 
| 350 | 
            +
                               with 95.0% confidence
         | 
| 351 | 
            +
            ```
         | 
| 352 | 
            +
             | 
| 353 | 
            +
            #### Hash value enumeration (size=10)
         | 
| 354 | 
            +
             | 
| 355 | 
            +
            ```
         | 
| 356 | 
            +
            Warming up --------------------------------------
         | 
| 357 | 
            +
                each_with_object    48.473k i/100ms
         | 
| 358 | 
            +
                    collect.Hash    49.061k i/100ms
         | 
| 359 | 
            +
                        map.to_h    53.340k i/100ms
         | 
| 360 | 
            +
                      to_h block    72.241k i/100ms
         | 
| 361 | 
            +
                transform_values   146.939k i/100ms
         | 
| 362 | 
            +
            Calculating -------------------------------------
         | 
| 363 | 
            +
                each_with_object    480.559k (± 0.1%) i/s -      2.424M in   5.043419s
         | 
| 364 | 
            +
                    collect.Hash    492.989k (± 0.0%) i/s -      2.502M in   5.075419s
         | 
| 365 | 
            +
                        map.to_h    546.714k (± 0.0%) i/s -      2.774M in   5.073369s
         | 
| 366 | 
            +
                      to_h block    725.482k (± 0.0%) i/s -      3.684M in   5.078410s
         | 
| 367 | 
            +
                transform_values      1.575M (± 0.2%) i/s -      7.935M in   5.036956s
         | 
| 368 | 
            +
                               with 95.0% confidence
         | 
| 369 | 
            +
             | 
| 370 | 
            +
            Comparison:
         | 
| 371 | 
            +
                transform_values:  1575397.1 i/s
         | 
| 372 | 
            +
                      to_h block:   725482.0 i/s - 2.17x  (± 0.00) slower
         | 
| 373 | 
            +
                        map.to_h:   546714.4 i/s - 2.88x  (± 0.00) slower
         | 
| 374 | 
            +
                    collect.Hash:   492988.8 i/s - 3.20x  (± 0.01) slower
         | 
| 375 | 
            +
                each_with_object:   480559.2 i/s - 3.28x  (± 0.01) slower
         | 
| 376 | 
            +
                               with 95.0% confidence
         | 
| 377 | 
            +
            ```
         | 
| 378 | 
            +
             | 
| 379 | 
            +
            #### Hash value enumeration (size=20)
         | 
| 380 | 
            +
             | 
| 381 | 
            +
            ```
         | 
| 382 | 
            +
            Warming up --------------------------------------
         | 
| 383 | 
            +
                each_with_object    28.320k i/100ms
         | 
| 384 | 
            +
                    collect.Hash    30.250k i/100ms
         | 
| 385 | 
            +
                        map.to_h    31.925k i/100ms
         | 
| 386 | 
            +
                      to_h block    42.127k i/100ms
         | 
| 387 | 
            +
                transform_values    87.393k i/100ms
         | 
| 388 | 
            +
            Calculating -------------------------------------
         | 
| 389 | 
            +
                each_with_object    269.839k (± 0.2%) i/s -      1.359M in   5.037950s
         | 
| 390 | 
            +
                    collect.Hash    303.464k (± 0.2%) i/s -      1.543M in   5.084567s
         | 
| 391 | 
            +
                        map.to_h    318.494k (± 0.0%) i/s -      1.596M in   5.011840s
         | 
| 392 | 
            +
                      to_h block    419.913k (± 0.0%) i/s -      2.106M in   5.016300s
         | 
| 393 | 
            +
                transform_values    801.802k (± 0.6%) i/s -      4.020M in   5.015563s
         | 
| 394 | 
            +
                               with 95.0% confidence
         | 
| 395 | 
            +
             | 
| 396 | 
            +
            Comparison:
         | 
| 397 | 
            +
                transform_values:   801801.6 i/s
         | 
| 398 | 
            +
                      to_h block:   419913.0 i/s - 1.91x  (± 0.01) slower
         | 
| 399 | 
            +
                        map.to_h:   318494.2 i/s - 2.52x  (± 0.01) slower
         | 
| 400 | 
            +
                    collect.Hash:   303464.4 i/s - 2.64x  (± 0.02) slower
         | 
| 401 | 
            +
                each_with_object:   269839.2 i/s - 2.97x  (± 0.02) slower
         | 
| 402 | 
            +
                               with 95.0% confidence
         | 
| 403 | 
            +
            ```
         | 
| 404 | 
            +
             | 
| 405 | 
            +
            #### Hash value enumeration (size=100)
         | 
| 406 | 
            +
             | 
| 407 | 
            +
            ```
         | 
| 408 | 
            +
            Warming up --------------------------------------
         | 
| 409 | 
            +
                each_with_object     6.319k i/100ms
         | 
| 410 | 
            +
                    collect.Hash     6.686k i/100ms
         | 
| 411 | 
            +
                        map.to_h     7.245k i/100ms
         | 
| 412 | 
            +
                      to_h block     9.317k i/100ms
         | 
| 413 | 
            +
                transform_values    20.555k i/100ms
         | 
| 414 | 
            +
            Calculating -------------------------------------
         | 
| 415 | 
            +
                each_with_object     63.102k (± 0.3%) i/s -    315.950k in   5.008225s
         | 
| 416 | 
            +
                    collect.Hash     66.782k (± 0.0%) i/s -    334.300k in   5.005839s
         | 
| 417 | 
            +
                        map.to_h     72.403k (± 0.0%) i/s -    362.250k in   5.003248s
         | 
| 418 | 
            +
                      to_h block     93.020k (± 0.0%) i/s -    465.850k in   5.008075s
         | 
| 419 | 
            +
                transform_values    207.295k (± 0.1%) i/s -      1.048M in   5.057171s
         | 
| 420 | 
            +
                               with 95.0% confidence
         | 
| 421 | 
            +
             | 
| 422 | 
            +
            Comparison:
         | 
| 423 | 
            +
                transform_values:   207294.9 i/s
         | 
| 424 | 
            +
                      to_h block:    93020.0 i/s - 2.23x  (± 0.00) slower
         | 
| 425 | 
            +
                        map.to_h:    72403.1 i/s - 2.86x  (± 0.00) slower
         | 
| 426 | 
            +
                    collect.Hash:    66782.1 i/s - 3.10x  (± 0.00) slower
         | 
| 427 | 
            +
                each_with_object:    63102.3 i/s - 3.28x  (± 0.01) slower
         | 
| 428 | 
            +
                               with 95.0% confidence
         | 
| 429 | 
            +
            ```
         | 
| 430 | 
            +
             | 
| 431 | 
            +
            #### Hash value enumeration (size=500)
         | 
| 432 | 
            +
             | 
| 433 | 
            +
            ```
         | 
| 434 | 
            +
            Warming up --------------------------------------
         | 
| 435 | 
            +
                each_with_object     1.316k i/100ms
         | 
| 436 | 
            +
                    collect.Hash     1.398k i/100ms
         | 
| 437 | 
            +
                        map.to_h     1.496k i/100ms
         | 
| 438 | 
            +
                      to_h block     1.876k i/100ms
         | 
| 439 | 
            +
                transform_values     4.471k i/100ms
         | 
| 440 | 
            +
            Calculating -------------------------------------
         | 
| 441 | 
            +
                each_with_object     13.154k (± 0.1%) i/s -     65.800k in   5.002444s
         | 
| 442 | 
            +
                    collect.Hash     13.983k (± 0.0%) i/s -     71.298k in   5.099149s
         | 
| 443 | 
            +
                        map.to_h     14.968k (± 0.0%) i/s -     76.296k in   5.097225s
         | 
| 444 | 
            +
                      to_h block     18.745k (± 0.0%) i/s -     93.800k in   5.004043s
         | 
| 445 | 
            +
                transform_values     44.903k (± 0.7%) i/s -    228.021k in   5.082046s
         | 
| 446 | 
            +
                               with 95.0% confidence
         | 
| 447 | 
            +
             | 
| 448 | 
            +
            Comparison:
         | 
| 449 | 
            +
                transform_values:    44903.5 i/s
         | 
| 450 | 
            +
                      to_h block:    18744.9 i/s - 2.40x  (± 0.02) slower
         | 
| 451 | 
            +
                        map.to_h:    14968.1 i/s - 3.00x  (± 0.02) slower
         | 
| 452 | 
            +
                    collect.Hash:    13982.6 i/s - 3.21x  (± 0.02) slower
         | 
| 453 | 
            +
                each_with_object:    13153.9 i/s - 3.41x  (± 0.02) slower
         | 
| 454 | 
            +
                               with 95.0% confidence
         | 
| 455 | 
            +
            ```
         |