Bug 207138

Summary: Reduce size of HashMap and HashSet
Product: WebKit Reporter: Alex Christensen <achristensen>
Component: New BugsAssignee: Alex Christensen <achristensen>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, cdumez, cmarcelo, dbates, ews-watchlist, hi, tsavell, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
patch ysuzuki: review+

Description Alex Christensen 2020-02-03 12:10:45 PST
Reduce size of HashMap and HashSet
Comment 1 Alex Christensen 2020-02-03 12:16:43 PST
Created attachment 389545 [details]
Patch
Comment 2 Alex Christensen 2020-02-03 13:43:52 PST
Created attachment 389560 [details]
patch
Comment 3 Yusuke Suzuki 2020-02-03 14:01:47 PST
Comment on attachment 389560 [details]
patch

r=me, looks nice!
Comment 4 Alex Christensen 2020-02-03 14:54:39 PST
Here are my JetStream2 results without the change:

JetStream2.0:Score:Geometric: 164.7pt stdev=0.7%
            3d-cube-SP:Score: 335pt stdev=8.4%
                      :Time:Geometric: 15.0ms stdev=9.3%
                      Average:Time: 11.6ms stdev=1.9%
                      First:Time: 23ms stdev=26.8%
                      Worst:Time: 12.8ms stdev=3.9%
            3d-raytrace-SP:Score: 352pt stdev=2.5%
                          :Time:Geometric: 14.2ms stdev=2.6%
                          Average:Time: 10.4ms stdev=1.9%
                          First:Time: 19.8ms stdev=4.2%
                          Worst:Time: 14.0ms stdev=8.4%
            Air:Score: 299pt stdev=2.8%
               :Time:Geometric: 16.7ms stdev=2.9%
               Average:Time: 4.99ms stdev=4.1%
               First:Time: 51.6ms stdev=2.9%
               Worst:Time: 18.2ms stdev=3.6%
            Babylon:Score: 412pt stdev=7.1%
                   :Time:Geometric: 12.2ms stdev=7.2%
                   Average:Time: 4.95ms stdev=5.9%
                   First:Time: 27.0ms stdev=2.6%
                   Worst:Time: 14ms stdev=14.4%
            Basic:Score: 521pt stdev=3.0%
                 :Time:Geometric: 9.61ms stdev=3.1%
                 Average:Time: 4.77ms stdev=4.8%
                 First:Time: 20.0ms stdev=3.5%
                 Worst:Time: 9.30ms stdev=2.2%
            Box2D:Score: 352pt stdev=1.2%
                 :Time:Geometric: 14.2ms stdev=1.2%
                 Average:Time: 6.50ms stdev=1.3%
                 First:Time: 43.2ms stdev=1.0%
                 Worst:Time: 10.2ms stdev=2.1%
            FlightPlanner:Score: 608.4pt stdev=0.6%
                         :Time:Geometric: 8.218ms stdev=0.6%
                         Average:Time: 5.13ms stdev=1.3%
                         First:Time: 13.8ms stdev=3.2%
                         Worst:Time: 7.85ms stdev=4.8%
            HashSet-wasm:Score: 37pt stdev=15.3%
                        :Time:Geometric: 138ms stdev=13.0%
                        Runtime:Time: 727.8ms stdev=0.9%
                        Startup:Time: 27ms stdev=23.3%
            ML:Score: 92.8pt stdev=2.2%
              :Time:Geometric: 53.9ms stdev=2.2%
              Average:Time: 44.21ms stdev=0.8%
              First:Time: 74.0ms stdev=5.7%
              Worst:Time: 47.9ms stdev=1.4%
            OfflineAssembler:Score: 114pt stdev=13.4%
                            :Time:Geometric: 45ms stdev=16.1%
                            Average:Time: 32.3ms stdev=2.6%
                            First:Time: 76ms stdev=54.7%
                            Worst:Time: 39.0ms stdev=4.7%
            UniPoker:Score: 300pt stdev=10.2%
                    :Time:Geometric: 17ms stdev=10.6%
                    Average:Time: 11.5ms stdev=1.9%
                    First:Time: 29ms stdev=31.6%
                    Worst:Time: 14.7ms stdev=1.5%
            WSL:Score: 1.06pt stdev=1.4%
               :Time:Geometric: 4.70s stdev=1.4%
               MainRun:Time: 7.57s stdev=1.7%
               Stdlib:Time: 2.92s stdev=1.3%
            acorn-wtb:Score: 42.7pt stdev=4.3%
                     :Time:Geometric: 117ms stdev=4.5%
                     Average:Time: 92.0ms stdev=5.3%
                     First:Time: 173.0ms stdev=0.8%
                     Worst:Time: 102ms stdev=9.0%
            ai-astar:Score: 415pt stdev=7.2%
                    :Time:Geometric: 12.1ms stdev=7.7%
                    Average:Time: 9.1ms stdev=10.0%
                    First:Time: 17ms stdev=46.1%
                    Worst:Time: 12ms stdev=16.0%
            async-fs:Score: 221pt stdev=3.1%
                    :Time:Geometric: 22.7ms stdev=3.1%
                    Average:Time: 18.3ms stdev=2.6%
                    First:Time: 30.0ms stdev=2.4%
                    Worst:Time: 21.2ms stdev=5.9%
            babylon-wtb:Score: 53.4pt stdev=2.0%
                       :Time:Geometric: 93.6ms stdev=2.0%
                       Average:Time: 73.2ms stdev=2.2%
                       First:Time: 139ms stdev=2.8%
                       Worst:Time: 81.0ms stdev=2.5%
            base64-SP:Score: 481pt stdev=8.6%
                     :Time:Geometric: 10.5ms stdev=8.9%
                     Average:Time: 8.14ms stdev=5.1%
                     First:Time: 14ms stdev=14.4%
                     Worst:Time: 9.80ms stdev=9.1%
            bomb-workers:Score: 103pt stdev=13.2%
                        :Time:Geometric: 49ms stdev=15.8%
                        Average:Time: 44.6ms stdev=3.6%
                        First:Time: 43.8ms stdev=3.0%
                        Worst:Time: 65ms stdev=49.2%
            cdjs:Score: 94.38pt stdev=0.7%
                :Time:Geometric: 52.98ms stdev=0.7%
                Average:Time: 47.59ms stdev=0.9%
                First:Time: 61.60ms stdev=0.9%
                Worst:Time: 50.7ms stdev=1.1%
            chai-wtb:Score: 65.8pt stdev=1.7%
                    :Time:Geometric: 76.0ms stdev=1.7%
                    Average:Time: 59.5ms stdev=1.4%
                    First:Time: 115ms stdev=2.4%
                    Worst:Time: 64.4ms stdev=5.9%
            coffeescript-wtb:Score: 27.2pt stdev=2.7%
                            :Time:Geometric: 184ms stdev=2.7%
                            Average:Time: 154ms stdev=3.3%
                            First:Time: 241ms stdev=3.8%
                            Worst:Time: 168ms stdev=3.8%
            crypto:Score: 1.03Kpt stdev=2.4%
                  :Time:Geometric: 4.88ms stdev=2.4%
                  Average:Time: 3.180ms stdev=0.9%
                  First:Time: 8.40ms stdev=6.5%
                  Worst:Time: 4.35ms stdev=3.1%
            crypto-aes-SP:Score: 533pt stdev=1.5%
                         :Time:Geometric: 9.39ms stdev=1.5%
                         Average:Time: 7.234ms stdev=0.8%
                         First:Time: 13.4ms stdev=4.1%
                         Worst:Time: 8.55ms stdev=2.4%
            crypto-md5-SP:Score: 546pt stdev=1.8%
                         :Time:Geometric: 9.15ms stdev=1.8%
                         Average:Time: 7.16ms stdev=1.4%
                         First:Time: 13.0ms stdev=0.0%
                         Worst:Time: 8.25ms stdev=4.3%
            crypto-sha1-SP:Score: 589pt stdev=2.8%
                          :Time:Geometric: 8.50ms stdev=2.8%
                          Average:Time: 5.99ms stdev=3.1%
                          First:Time: 12.0ms stdev=0.0%
                          Worst:Time: 8.55ms stdev=5.6%
            date-format-tofte-SP:Score: 271pt stdev=2.1%
                                :Time:Geometric: 18.5ms stdev=2.1%
                                Average:Time: 15.4ms stdev=1.2%
                                First:Time: 25.2ms stdev=7.1%
                                Worst:Time: 16.2ms stdev=1.3%
            date-format-xparb-SP:Score: 284pt stdev=7.5%
                                :Time:Geometric: 17.7ms stdev=7.8%
                                Average:Time: 12.6ms stdev=1.0%
                                First:Time: 31ms stdev=28.6%
                                Worst:Time: 14.3ms stdev=8.5%
            delta-blue:Score: 731pt stdev=8.5%
                      :Time:Geometric: 6.88ms stdev=9.3%
                      Average:Time: 3.13ms stdev=2.2%
                      First:Time: 17ms stdev=29.7%
                      Worst:Time: 6.25ms stdev=2.8%
            earley-boyer:Score: 623pt stdev=7.8%
                        :Time:Geometric: 8.07ms stdev=8.0%
                        Average:Time: 4.84ms stdev=3.0%
                        First:Time: 13ms stdev=15.5%
                        Worst:Time: 8.2ms stdev=17.6%
            espree-wtb:Score: 45.6pt stdev=5.1%
                      :Time:Geometric: 110ms stdev=5.1%
                      Average:Time: 90.3ms stdev=3.6%
                      First:Time: 155ms stdev=9.9%
                      Worst:Time: 95.0ms stdev=3.7%
            first-inspector-code-load:Score: 206.5pt stdev=0.9%
                                     :Time:Geometric: 24.22ms stdev=0.9%
                                     Average:Time: 23.43ms stdev=0.9%
                                     First:Time: 25.0ms stdev=0.0%
                                     Worst:Time: 24.2ms stdev=1.8%
            float-mm.c:Score: 8.45pt stdev=6.3%
                      :Time:Geometric: 594ms stdev=6.2%
                      Average:Time: 574ms stdev=11.4%
                      First:Time: 618ms stdev=5.7%
                      Worst:Time: 594ms stdev=9.4%
            gaussian-blur:Score: 327.1pt stdev=0.9%
                         :Time:Geometric: 15.29ms stdev=0.9%
                         Average:Time: 12.14ms stdev=1.0%
                         First:Time: 21.4ms stdev=2.6%
                         Worst:Time: 13.8ms stdev=1.8%
            gbemu:Score: 126pt stdev=5.1%
                 :Time:Geometric: 39.7ms stdev=5.2%
                 Average:Time: 21.0ms stdev=1.9%
                 First:Time: 73.0ms stdev=3.2%
                 Worst:Time: 41ms stdev=17.1%
            gcc-loops-wasm:Score: 34.40pt stdev=0.4%
                          :Time:Geometric: 145.3ms stdev=0.4%
                          Runtime:Time: 2.641s stdev=0.8%
                          Startup:Time: 8.00ms stdev=0.0%
            hash-map:Score: 368pt stdev=2.1%
                    :Time:Geometric: 13.6ms stdev=2.1%
                    Average:Time: 10.00ms stdev=1.0%
                    First:Time: 19.0ms stdev=0.0%
                    Worst:Time: 13.2ms stdev=5.5%
            jshint-wtb:Score: 33.1pt stdev=1.5%
                      :Time:Geometric: 151ms stdev=1.5%
                      Average:Time: 126ms stdev=2.3%
                      First:Time: 206ms stdev=1.5%
                      Worst:Time: 133ms stdev=3.2%
            json-parse-inspector:Score: 164pt stdev=1.2%
                                :Time:Geometric: 30.4ms stdev=1.2%
                                Average:Time: 28.86ms stdev=0.7%
                                First:Time: 29.6ms stdev=1.9%
                                Worst:Time: 33.0ms stdev=2.4%
            json-stringify-inspector:Score: 143pt stdev=2.5%
                                    :Time:Geometric: 34.9ms stdev=2.6%
                                    Average:Time: 31.5ms stdev=2.0%
                                    First:Time: 30.8ms stdev=2.7%
                                    Worst:Time: 43.9ms stdev=4.2%
            lebab-wtb:Score: 38pt stdev=12.7%
                     :Time:Geometric: 133ms stdev=15.0%
                     Average:Time: 102ms stdev=12.3%
                     First:Time: 185ms stdev=4.0%
                     Worst:Time: 127ms stdev=32.8%
            mandreel:Score: 100.0pt stdev=6.1%
                    :Time:Geometric: 50.2ms stdev=6.5%
                    Average:Time: 31.8ms stdev=1.6%
                    First:Time: 94.6ms stdev=1.6%
                    Worst:Time: 42ms stdev=18.4%
            multi-inspector-code-load:Score: 323pt stdev=4.5%
                                     :Time:Geometric: 15.5ms stdev=4.7%
                                     Average:Time: 6.5ms stdev=15.6%
                                     First:Time: 24.2ms stdev=1.8%
                                     Worst:Time: 24.0ms stdev=0.0%
            n-body-SP:Score: 719pt stdev=2.1%
                     :Time:Geometric: 6.96ms stdev=2.2%
                     Average:Time: 5.903ms stdev=0.7%
                     First:Time: 9.00ms stdev=0.0%
                     Worst:Time: 6.35ms stdev=6.0%
            navier-stokes:Score: 761pt stdev=2.8%
                         :Time:Geometric: 6.57ms stdev=2.7%
                         Average:Time: 4.54ms stdev=1.3%
                         First:Time: 11.0ms stdev=6.4%
                         Worst:Time: 5.70ms stdev=3.7%
            octane-code-load:Score: 737pt stdev=7.9%
                            :Time:Geometric: 6.82ms stdev=7.6%
                            Average:Time: 5.52ms stdev=2.1%
                            First:Time: 8.8ms stdev=14.8%
                            Worst:Time: 6.55ms stdev=6.3%
            octane-zlib:Score: 18pt stdev=18.1%
                       :Time:Geometric: 290ms stdev=17.0%
                       Average:Time: 169.1ms stdev=0.7%
                       First:Time: 897ms stdev=44.7%
                       Worst:Time: 171ms stdev=1.2%
            pdfjs:Score: 136pt stdev=9.4%
                 :Time:Geometric: 37ms stdev=10.7%
                 Average:Time: 24.8ms stdev=4.1%
                 First:Time: 53.4ms stdev=1.7%
                 Worst:Time: 40ms stdev=29.7%
            prepack-wtb:Score: 40.2pt stdev=1.8%
                       :Time:Geometric: 124ms stdev=1.8%
                       Average:Time: 87.1ms stdev=1.9%
                       First:Time: 216ms stdev=1.2%
                       Worst:Time: 103ms stdev=2.5%
            quicksort-wasm:Score: 325pt stdev=2.6%
                          :Time:Geometric: 15.4ms stdev=2.7%
                          Runtime:Time: 29.0ms stdev=0.0%
                          Startup:Time: 8.20ms stdev=5.5%
            raytrace:Score: 539pt stdev=2.0%
                    :Time:Geometric: 9.28ms stdev=2.0%
                    Average:Time: 4.59ms stdev=1.5%
                    First:Time: 14.4ms stdev=3.8%
                    Worst:Time: 12.1ms stdev=2.4%
            regex-dna-SP:Score: 398pt stdev=3.0%
                        :Time:Geometric: 12.6ms stdev=3.1%
                        Average:Time: 11.4ms stdev=3.2%
                        First:Time: 12.2ms stdev=3.7%
                        Worst:Time: 14.3ms stdev=3.1%
            regexp:Score: 289pt stdev=1.3%
                  :Time:Geometric: 17.3ms stdev=1.3%
                  Average:Time: 15.6ms stdev=1.1%
                  First:Time: 17.8ms stdev=2.5%
                  Worst:Time: 18.6ms stdev=1.2%
            richards:Score: 689pt stdev=1.4%
                    :Time:Geometric: 7.26ms stdev=1.4%
                    Average:Time: 5.06ms stdev=1.4%
                    First:Time: 12.6ms stdev=4.3%
                    Worst:Time: 6.00ms stdev=0.0%
            richards-wasm:Score: 92.5pt stdev=3.6%
                         :Time:Geometric: 54.1ms stdev=3.7%
                         Runtime:Time: 565ms stdev=2.0%
                         Startup:Time: 5.20ms stdev=8.6%
            segmentation:Score: 29.6pt stdev=1.5%
                        :Time:Geometric: 169ms stdev=1.5%
                        Average:Time: 113ms stdev=2.8%
                        First:Time: 228ms stdev=1.0%
                        Worst:Time: 189ms stdev=1.6%
            splay:Score: 376pt stdev=2.3%
                 :Time:Geometric: 13.3ms stdev=2.2%
                 Average:Time: 10.7ms stdev=1.5%
                 First:Time: 12.8ms stdev=6.5%
                 Worst:Time: 17.1ms stdev=1.7%
            stanford-crypto-aes:Score: 334pt stdev=2.8%
                               :Time:Geometric: 15.0ms stdev=2.7%
                               Average:Time: 11.5ms stdev=2.3%
                               First:Time: 20.4ms stdev=2.7%
                               Worst:Time: 14.3ms stdev=5.9%
            stanford-crypto-pbkdf2:Score: 452pt stdev=1.5%
                                  :Time:Geometric: 11.1ms stdev=1.5%
                                  Average:Time: 9.46ms stdev=2.5%
                                  First:Time: 11.2ms stdev=4.0%
                                  Worst:Time: 12.8ms stdev=2.0%
            stanford-crypto-sha256:Score: 562pt stdev=3.7%
                                  :Time:Geometric: 8.90ms stdev=3.6%
                                  Average:Time: 7.43ms stdev=4.0%
                                  First:Time: 11.0ms stdev=0.0%
                                  Worst:Time: 8.65ms stdev=7.0%
            string-unpack-code-SP:Score: 309pt stdev=2.7%
                                 :Time:Geometric: 16.2ms stdev=2.7%
                                 Average:Time: 14.65ms stdev=0.9%
                                 First:Time: 17.8ms stdev=7.3%
                                 Worst:Time: 16.3ms stdev=1.7%
            tagcloud-SP:Score: 226pt stdev=4.9%
                       :Time:Geometric: 22.2ms stdev=4.6%
                       Average:Time: 17.6ms stdev=1.8%
                       First:Time: 26.2ms stdev=3.2%
                       Worst:Time: 23.6ms stdev=9.1%
            tsf-wasm:Score: 85pt stdev=11.2%
                    :Time:Geometric: 59ms stdev=11.7%
                    Runtime:Time: 307ms stdev=1.5%
                    Startup:Time: 12ms stdev=23.3%
            typescript:Score: 15.7pt stdev=3.3%
                      :Time:Geometric: 318ms stdev=3.4%
                      Average:Time: 237ms stdev=4.0%
                      First:Time: 466ms stdev=2.6%
                      Worst:Time: 292ms stdev=3.8%
            uglify-js-wtb:Score: 21.3pt stdev=1.9%
                         :Time:Geometric: 235ms stdev=2.0%
                         Average:Time: 180ms stdev=1.9%
                         First:Time: 355ms stdev=2.0%
                         Worst:Time: 204ms stdev=2.9%

And here are my JetStream2 results with the change:

JetStream2.0:Score:Geometric: 163pt stdev=2.1%
            3d-cube-SP:Score: 343pt stdev=2.4%
                      :Time:Geometric: 14.6ms stdev=2.3%
                      Average:Time: 11.7ms stdev=2.3%
                      First:Time: 19.6ms stdev=2.8%
                      Worst:Time: 13.6ms stdev=6.3%
            3d-raytrace-SP:Score: 367pt stdev=3.1%
                          :Time:Geometric: 13.6ms stdev=3.2%
                          Average:Time: 10.3ms stdev=4.1%
                          First:Time: 18.8ms stdev=2.4%
                          Worst:Time: 13.1ms stdev=4.8%
            Air:Score: 285pt stdev=9.7%
               :Time:Geometric: 18ms stdev=10.8%
               Average:Time: 5.09ms stdev=7.8%
               First:Time: 52.4ms stdev=2.6%
               Worst:Time: 21ms stdev=23.9%
            Babylon:Score: 415pt stdev=10.0%
                   :Time:Geometric: 12ms stdev=10.4%
                   Average:Time: 4.91ms stdev=5.4%
                   First:Time: 30ms stdev=21.9%
                   Worst:Time: 12ms stdev=13.1%
            Basic:Score: 514pt stdev=4.3%
                 :Time:Geometric: 9.74ms stdev=4.5%
                 Average:Time: 4.77ms stdev=4.8%
                 First:Time: 20.2ms stdev=5.4%
                 Worst:Time: 9.60ms stdev=5.1%
            Box2D:Score: 347pt stdev=2.6%
                 :Time:Geometric: 14.4ms stdev=2.7%
                 Average:Time: 6.59ms stdev=2.9%
                 First:Time: 43.6ms stdev=3.5%
                 Worst:Time: 10.4ms stdev=2.0%
            FlightPlanner:Score: 592pt stdev=2.8%
                         :Time:Geometric: 8.46ms stdev=2.9%
                         Average:Time: 5.18ms stdev=2.2%
                         First:Time: 14.6ms stdev=3.8%
                         Worst:Time: 8.00ms stdev=6.2%
            HashSet-wasm:Score: 35.2pt stdev=2.7%
                        :Time:Geometric: 142ms stdev=2.7%
                        Runtime:Time: 735ms stdev=2.3%
                        Startup:Time: 27.6ms stdev=6.6%
            ML:Score: 87.3pt stdev=7.1%
              :Time:Geometric: 57.5ms stdev=7.0%
              Average:Time: 44.0ms stdev=4.3%
              First:Time: 91ms stdev=17.5%
              Worst:Time: 48.1ms stdev=5.0%
            OfflineAssembler:Score: 120pt stdev=1.7%
                            :Time:Geometric: 41.6ms stdev=1.7%
                            Average:Time: 32.6ms stdev=1.7%
                            First:Time: 58.6ms stdev=2.3%
                            Worst:Time: 37.5ms stdev=2.6%
            UniPoker:Score: 310pt stdev=4.0%
                    :Time:Geometric: 16.2ms stdev=4.1%
                    Average:Time: 11.9ms stdev=1.2%
                    First:Time: 22.6ms stdev=4.0%
                    Worst:Time: 16ms stdev=12.7%
            WSL:Score: 1.05pt stdev=2.6%
               :Time:Geometric: 4.76s stdev=2.7%
               MainRun:Time: 7.69s stdev=3.6%
               Stdlib:Time: 2.94s stdev=1.7%
            acorn-wtb:Score: 43.3pt stdev=2.3%
                     :Time:Geometric: 115ms stdev=2.3%
                     Average:Time: 91.3ms stdev=2.6%
                     First:Time: 173ms stdev=2.8%
                     Worst:Time: 97.4ms stdev=3.0%
            ai-astar:Score: 422pt stdev=7.7%
                    :Time:Geometric: 11.9ms stdev=7.9%
                    Average:Time: 8.4ms stdev=14.8%
                    First:Time: 17ms stdev=40.8%
                    Worst:Time: 12.2ms stdev=8.5%
            async-fs:Score: 218pt stdev=5.9%
                    :Time:Geometric: 23.0ms stdev=6.1%
                    Average:Time: 18.6ms stdev=5.3%
                    First:Time: 30.8ms stdev=6.7%
                    Worst:Time: 21.3ms stdev=6.8%
            babylon-wtb:Score: 53.8pt stdev=2.4%
                       :Time:Geometric: 93.1ms stdev=2.4%
                       Average:Time: 71.3ms stdev=2.2%
                       First:Time: 145ms stdev=5.0%
                       Worst:Time: 78.0ms stdev=4.3%
            base64-SP:Score: 482pt stdev=4.0%
                     :Time:Geometric: 10.4ms stdev=3.9%
                     Average:Time: 8.03ms stdev=5.3%
                     First:Time: 14ms stdev=11.6%
                     Worst:Time: 9.75ms stdev=6.0%
            bomb-workers:Score: 103pt stdev=5.0%
                        :Time:Geometric: 48.6ms stdev=5.2%
                        Average:Time: 43.4ms stdev=2.2%
                        First:Time: 53ms stdev=12.7%
                        Worst:Time: 50.1ms stdev=3.6%
            cdjs:Score: 93.6pt stdev=2.3%
                :Time:Geometric: 53.5ms stdev=2.4%
                Average:Time: 48.0ms stdev=3.4%
                First:Time: 62.0ms stdev=1.6%
                Worst:Time: 51.3ms stdev=2.6%
            chai-wtb:Score: 63.4pt stdev=6.4%
                    :Time:Geometric: 79.2ms stdev=6.9%
                    Average:Time: 61.8ms stdev=7.5%
                    First:Time: 119ms stdev=2.3%
                    Worst:Time: 68ms stdev=13.0%
            coffeescript-wtb:Score: 26.7pt stdev=3.5%
                            :Time:Geometric: 187ms stdev=3.6%
                            Average:Time: 152ms stdev=3.5%
                            First:Time: 264ms stdev=17.3%
                            Worst:Time: 165ms stdev=2.8%
            crypto:Score: 1.05Kpt stdev=2.0%
                  :Time:Geometric: 4.78ms stdev=2.0%
                  Average:Time: 3.22ms stdev=2.7%
                  First:Time: 8.00ms stdev=0.0%
                  Worst:Time: 4.25ms stdev=4.2%
            crypto-aes-SP:Score: 523pt stdev=2.9%
                         :Time:Geometric: 9.57ms stdev=2.9%
                         Average:Time: 7.37ms stdev=3.1%
                         First:Time: 14.0000000ms stdev=0.0%
                         Worst:Time: 8.50ms stdev=5.9%
            crypto-md5-SP:Score: 508pt stdev=7.0%
                         :Time:Geometric: 9.88ms stdev=7.0%
                         Average:Time: 7.29ms stdev=2.2%
                         First:Time: 15ms stdev=13.4%
                         Worst:Time: 9.2ms stdev=15.2%
            crypto-sha1-SP:Score: 580pt stdev=2.9%
                          :Time:Geometric: 8.63ms stdev=2.9%
                          Average:Time: 6.03ms stdev=2.7%
                          First:Time: 12.2ms stdev=3.7%
                          Worst:Time: 8.75ms stdev=4.5%
            date-format-tofte-SP:Score: 272pt stdev=3.2%
                                :Time:Geometric: 18.4ms stdev=3.2%
                                Average:Time: 15.6ms stdev=3.3%
                                First:Time: 24.0ms stdev=5.9%
                                Worst:Time: 16.6ms stdev=2.5%
            date-format-xparb-SP:Score: 273pt stdev=5.8%
                                :Time:Geometric: 18.3ms stdev=5.7%
                                Average:Time: 12.9ms stdev=1.8%
                                First:Time: 31ms stdev=15.5%
                                Worst:Time: 15.4ms stdev=9.8%
            delta-blue:Score: 728pt stdev=8.5%
                      :Time:Geometric: 6.91ms stdev=9.2%
                      Average:Time: 3.11ms stdev=3.6%
                      First:Time: 17ms stdev=33.0%
                      Worst:Time: 6.40ms stdev=4.5%
            earley-boyer:Score: 624pt stdev=7.9%
                        :Time:Geometric: 8.05ms stdev=8.3%
                        Average:Time: 4.79ms stdev=7.1%
                        First:Time: 12.4ms stdev=4.4%
                        Worst:Time: 8.8ms stdev=17.3%
            espree-wtb:Score: 44.5pt stdev=9.9%
                      :Time:Geometric: 113ms stdev=11.0%
                      Average:Time: 90.2ms stdev=4.2%
                      First:Time: 179ms stdev=35.6%
                      Worst:Time: 93.0ms stdev=4.9%
            first-inspector-code-load:Score: 203pt stdev=3.0%
                                     :Time:Geometric: 24.7ms stdev=3.0%
                                     Average:Time: 23.8ms stdev=2.8%
                                     First:Time: 25.4ms stdev=2.2%
                                     Worst:Time: 24.9ms stdev=4.3%
            float-mm.c:Score: 8.19pt stdev=8.1%
                      :Time:Geometric: 613ms stdev=7.5%
                      Average:Time: 611ms stdev=11.2%
                      First:Time: 610ms stdev=9.9%
                      Worst:Time: 624ms stdev=11.8%
            gaussian-blur:Score: 326pt stdev=2.0%
                         :Time:Geometric: 15.3ms stdev=2.0%
                         Average:Time: 12.2ms stdev=2.2%
                         First:Time: 21.4ms stdev=2.6%
                         Worst:Time: 13.8ms stdev=3.0%
            gbemu:Score: 130pt stdev=1.9%
                 :Time:Geometric: 38.6ms stdev=1.9%
                 Average:Time: 21.1ms stdev=2.8%
                 First:Time: 73.6ms stdev=2.8%
                 Worst:Time: 36.9ms stdev=2.7%
            gcc-loops-wasm:Score: 34.7pt stdev=3.6%
                          :Time:Geometric: 144ms stdev=3.5%
                          Runtime:Time: 2.66s stdev=2.3%
                          Startup:Time: 7.80ms stdev=5.7%
            hash-map:Score: 354pt stdev=2.7%
                    :Time:Geometric: 14.1ms stdev=2.8%
                    Average:Time: 10.2ms stdev=2.9%
                    First:Time: 19.8ms stdev=2.3%
                    Worst:Time: 14.1ms stdev=4.4%
            jshint-wtb:Score: 32.2pt stdev=2.4%
                      :Time:Geometric: 155ms stdev=2.4%
                      Average:Time: 130ms stdev=1.7%
                      First:Time: 211ms stdev=4.2%
                      Worst:Time: 136ms stdev=2.0%
            json-parse-inspector:Score: 162pt stdev=3.8%
                                :Time:Geometric: 30.9ms stdev=3.8%
                                Average:Time: 29.3ms stdev=3.9%
                                First:Time: 30.2ms stdev=2.8%
                                Worst:Time: 33.3ms stdev=7.6%
            json-stringify-inspector:Score: 139pt stdev=6.9%
                                    :Time:Geometric: 36.1ms stdev=7.1%
                                    Average:Time: 32.4ms stdev=4.8%
                                    First:Time: 30.6ms stdev=1.8%
                                    Worst:Time: 48ms stdev=16.4%
            lebab-wtb:Score: 38.0pt stdev=7.8%
                     :Time:Geometric: 132ms stdev=8.1%
                     Average:Time: 101ms stdev=5.5%
                     First:Time: 199ms stdev=10.5%
                     Worst:Time: 115ms stdev=8.4%
            mandreel:Score: 101pt stdev=1.9%
                    :Time:Geometric: 49.3ms stdev=1.9%
                    Average:Time: 32.0ms stdev=2.3%
                    First:Time: 96.2ms stdev=1.9%
                    Worst:Time: 39.0ms stdev=1.7%
            multi-inspector-code-load:Score: 318pt stdev=5.9%
                                     :Time:Geometric: 15.8ms stdev=6.1%
                                     Average:Time: 6.6ms stdev=19.6%
                                     First:Time: 24.6ms stdev=3.6%
                                     Worst:Time: 24.4ms stdev=3.1%
            n-body-SP:Score: 705pt stdev=4.4%
                     :Time:Geometric: 7.11ms stdev=4.5%
                     Average:Time: 5.97ms stdev=2.4%
                     First:Time: 9.40ms stdev=5.8%
                     Worst:Time: 6.40ms stdev=5.9%
            navier-stokes:Score: 738pt stdev=2.3%
                         :Time:Geometric: 6.78ms stdev=2.3%
                         Average:Time: 4.60ms stdev=2.3%
                         First:Time: 11.8ms stdev=3.8%
                         Worst:Time: 5.75ms stdev=3.1%
            octane-code-load:Score: 708pt stdev=13.6%
                            :Time:Geometric: 7.2ms stdev=13.9%
                            Average:Time: 5.71ms stdev=6.5%
                            First:Time: 9.4ms stdev=22.1%
                            Worst:Time: 6.9ms stdev=13.2%
            octane-zlib:Score: 17pt stdev=20.9%
                       :Time:Geometric: 296ms stdev=19.5%
                       Average:Time: 172ms stdev=2.5%
                       First:Time: 926ms stdev=48.2%
                       Worst:Time: 175ms stdev=2.8%
            pdfjs:Score: 139.7pt stdev=0.5%
                 :Time:Geometric: 35.78ms stdev=0.5%
                 Average:Time: 24.33ms stdev=0.6%
                 First:Time: 53.8ms stdev=2.0%
                 Worst:Time: 35.00ms stdev=0.9%
            prepack-wtb:Score: 39.68pt stdev=0.9%
                       :Time:Geometric: 126.0ms stdev=0.9%
                       Average:Time: 88.40ms stdev=0.9%
                       First:Time: 218ms stdev=1.4%
                       Worst:Time: 104.0ms stdev=0.7%
            quicksort-wasm:Score: 321pt stdev=3.1%
                          :Time:Geometric: 15.6ms stdev=3.2%
                          Runtime:Time: 29.6ms stdev=1.9%
                          Startup:Time: 8.20ms stdev=5.5%
            raytrace:Score: 532.1pt stdev=0.9%
                    :Time:Geometric: 9.397ms stdev=0.9%
                    Average:Time: 4.62ms stdev=1.2%
                    First:Time: 14.8ms stdev=3.0%
                    Worst:Time: 12.2ms stdev=2.3%
            regex-dna-SP:Score: 401pt stdev=2.8%
                        :Time:Geometric: 12.5ms stdev=2.8%
                        Average:Time: 11.3ms stdev=2.4%
                        First:Time: 12.4ms stdev=4.4%
                        Worst:Time: 13.9ms stdev=6.0%
            regexp:Score: 282pt stdev=2.7%
                  :Time:Geometric: 17.8ms stdev=2.8%
                  Average:Time: 15.65ms stdev=0.6%
                  First:Time: 18.4ms stdev=4.9%
                  Worst:Time: 19.5ms stdev=3.1%
            richards:Score: 689pt stdev=1.1%
                    :Time:Geometric: 7.25ms stdev=1.1%
                    Average:Time: 5.10ms stdev=3.1%
                    First:Time: 12.6ms stdev=4.3%
                    Worst:Time: 5.95ms stdev=1.9%
            richards-wasm:Score: 93.5pt stdev=4.3%
                         :Time:Geometric: 53.5ms stdev=4.5%
                         Runtime:Time: 552ms stdev=2.1%
                         Startup:Time: 5.20ms stdev=8.6%
            segmentation:Score: 28.9pt stdev=2.7%
                        :Time:Geometric: 173ms stdev=2.6%
                        Average:Time: 115ms stdev=5.0%
                        First:Time: 234ms stdev=1.7%
                        Worst:Time: 192ms stdev=3.1%
            splay:Score: 373pt stdev=2.1%
                 :Time:Geometric: 13.4ms stdev=2.1%
                 Average:Time: 10.9ms stdev=1.3%
                 First:Time: 12.8ms stdev=3.5%
                 Worst:Time: 17.4ms stdev=3.5%
            stanford-crypto-aes:Score: 330pt stdev=1.7%
                               :Time:Geometric: 15.2ms stdev=1.7%
                               Average:Time: 11.4ms stdev=1.5%
                               First:Time: 20.6ms stdev=2.7%
                               Worst:Time: 14.8ms stdev=7.2%
            stanford-crypto-pbkdf2:Score: 453pt stdev=2.5%
                                  :Time:Geometric: 11.0ms stdev=2.5%
                                  Average:Time: 9.32ms stdev=1.6%
                                  First:Time: 11.4ms stdev=7.8%
                                  Worst:Time: 12.7ms stdev=2.6%
            stanford-crypto-sha256:Score: 552pt stdev=4.8%
                                  :Time:Geometric: 9.08ms stdev=4.8%
                                  Average:Time: 7.38ms stdev=4.6%
                                  First:Time: 11.6ms stdev=7.7%
                                  Worst:Time: 8.75ms stdev=4.0%
            string-unpack-code-SP:Score: 303pt stdev=1.6%
                                 :Time:Geometric: 16.5ms stdev=1.6%
                                 Average:Time: 14.80ms stdev=0.8%
                                 First:Time: 18.2ms stdev=2.5%
                                 Worst:Time: 16.7ms stdev=2.7%
            tagcloud-SP:Score: 241pt stdev=3.8%
                       :Time:Geometric: 20.8ms stdev=3.9%
                       Average:Time: 17.0ms stdev=1.5%
                       First:Time: 25.8ms stdev=1.7%
                       Worst:Time: 21ms stdev=10.2%
            tsf-wasm:Score: 80pt stdev=19.4%
                    :Time:Geometric: 64ms stdev=21.5%
                    Runtime:Time: 299ms stdev=4.3%
                    Startup:Time: 15ms stdev=49.1%
            typescript:Score: 15.6pt stdev=2.6%
                      :Time:Geometric: 320ms stdev=2.6%
                      Average:Time: 238ms stdev=3.1%
                      First:Time: 470ms stdev=2.7%
                      Worst:Time: 295ms stdev=2.3%
            uglify-js-wtb:Score: 21.0pt stdev=2.5%
                         :Time:Geometric: 238ms stdev=2.5%
                         Average:Time: 183ms stdev=2.5%
                         First:Time: 356ms stdev=2.2%
                         Worst:Time: 207ms stdev=3.1%

There are some small increases and some small decreases, but everything seems to be within noise.  I'm planning to commit this and see if our bots agree.
Comment 5 Devin Rousso 2020-02-03 15:02:32 PST
Comment on attachment 389560 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=389560&action=review

+1, this is awesome =D

> Source/WTF/wtf/HashTable.h:663
> +            return nullptr;
> +        unsigned sizeMask = tableSizeMask();

Style: I'd add a newline between these

> Source/WTF/wtf/HashTable.h:1293
>          m_table = allocateTable(newTableSize);
> +        setTableSize(newTableSize);
> +        setTableSizeMask(newTableSize - 1);
> +        setDeletedCount(0);
> +        setKeyCount(oldKeyCount);

Should we move all of this inside `allocateTable`, similar to how the table's size is pulled out of the `ValueType* table` inside `deallocateTable`?

> Source/WTF/wtf/HashTable.h:1362
> +        setKeyCount(otherKeyCount);
> +        setDeletedCount(0);

I would guess no, but does the order of these matter?  Above, you `setKeyCount` after `setDeletedCount`.
Comment 6 Alex Christensen 2020-02-03 15:16:07 PST
Comment on attachment 389560 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=389560&action=review

>> Source/WTF/wtf/HashTable.h:1293
>> +        setKeyCount(oldKeyCount);
> 
> Should we move all of this inside `allocateTable`, similar to how the table's size is pulled out of the `ValueType* table` inside `deallocateTable`?

We could, and all 4 do need to be initialized, but there are two reasons not to:
1. We would have to pass the keyCount into the call to allocateTable, which would be strange.
2. Then the memory allocator would be responsible for initializing some memory but not all.  I prefer to keep the existing model where the caller is responsible for initializing all the memory.

>> Source/WTF/wtf/HashTable.h:1362
>> +        setDeletedCount(0);
> 
> I would guess no, but does the order of these matter?  Above, you `setKeyCount` after `setDeletedCount`.

Order doesn't matter here.  It's just writing 4 integers.  All metadata must be initialized.
Comment 7 Yusuke Suzuki 2020-02-03 15:25:02 PST
Comment on attachment 389560 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=389560&action=review

> Source/WTF/wtf/HashTable.h:1196
> +            return reinterpret_cast<ValueType*>(static_cast<char*>(HashTableMalloc::zeroedMalloc(metadataSize + size * sizeof(ValueType))) + metadataSize);

One good addition is, `static_assert(metadataSize % alignof(ValueType) == 0)` to ensure that offsetted vector is still meeting alignment requirement.
Comment 8 Alex Christensen 2020-02-03 15:48:44 PST
http://trac.webkit.org/r255611
Comment 9 Radar WebKit Bug Importer 2020-02-03 15:49:18 PST
<rdar://problem/59129599>
Comment 10 Alex Christensen 2020-02-03 15:49:56 PST
Note: this was intended to help with <rdar://problem/58066381>
Comment 11 Truitt Savell 2020-02-04 09:03:40 PST
It looks like these changes broke 3 lldb tests.

Tracking in https://bugs.webkit.org/show_bug.cgi?id=207204