We could make a nice dent in this by reserving space for the exact number of Identifiers instead of going with Vector's default 16.
<rdar://problem/12380635>
Created attachment 165881 [details] A Simple Patch
Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on coinslot (MacBookPro8,2). VMs tested: "TipOfTree" at /Users/awesomekling/Source/WebKit-ToT/WebKitBuild/Release/jsc "MyChanges" at /Users/awesomekling/Source/WebKit/WebKitBuild/Release/jsc Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree MyChanges SunSpider: 3d-cube 9.0060+-0.2374 8.9108+-0.2272 might be 1.0107x faster 3d-morph 8.4896+-0.2729 8.1732+-0.1467 might be 1.0387x faster 3d-raytrace 13.8829+-0.3156 ? 13.9701+-0.4711 ? access-binary-trees 1.9560+-0.0497 ? 2.0721+-0.0942 ? might be 1.0594x slower access-fannkuch 7.5953+-0.1613 ^ 7.2316+-0.1027 ^ definitely 1.0503x faster access-nbody 4.4224+-0.1298 ? 4.5341+-0.1339 ? might be 1.0252x slower access-nsieve 3.6010+-0.0737 ? 3.6868+-0.0954 ? might be 1.0238x slower bitops-3bit-bits-in-byte 1.6758+-0.0444 1.6746+-0.0354 bitops-bits-in-byte 3.3167+-0.0823 3.3054+-0.1017 bitops-bitwise-and 2.6395+-0.0553 2.6357+-0.0677 bitops-nsieve-bits 4.1930+-0.0979 4.1720+-0.1153 controlflow-recursive 2.6959+-0.1051 2.6447+-0.0820 might be 1.0193x faster crypto-aes 11.0313+-0.3142 ? 11.0411+-0.3341 ? crypto-md5 4.7491+-0.1861 4.7323+-0.2337 crypto-sha1 3.8678+-0.1658 3.7770+-0.1735 might be 1.0240x faster date-format-tofte 14.5358+-0.3125 ? 14.6003+-0.2817 ? date-format-xparb 12.1745+-0.1789 ? 12.2593+-0.2100 ? math-cordic 4.2018+-0.0989 ? 4.2140+-0.0967 ? math-partial-sums 9.4066+-0.1443 ? 9.4293+-0.1323 ? math-spectral-norm 3.4303+-0.1206 ? 3.4641+-0.0899 ? regexp-dna 9.8122+-0.2056 ? 9.9989+-0.2294 ? might be 1.0190x slower string-base64 5.9820+-0.1434 ? 6.4808+-0.6635 ? might be 1.0834x slower string-fasta 9.3159+-0.1607 9.3034+-0.1960 string-tagcloud 14.0442+-0.2572 ? 14.5057+-0.4337 ? might be 1.0329x slower string-unpack-code 29.1835+-1.1274 ? 29.6405+-0.6265 ? might be 1.0157x slower string-validate-input 8.1109+-0.2984 7.8647+-0.1969 might be 1.0313x faster <arithmetic> * 7.8200+-0.0555 ? 7.8586+-0.0457 ? might be 1.0049x slower <geometric> 6.1750+-0.0357 ? 6.1964+-0.0423 ? might be 1.0035x slower <harmonic> 4.9105+-0.0356 ? 4.9347+-0.0407 ? might be 1.0049x slower TipOfTree MyChanges V8Spider: crypto 82.8633+-1.2156 82.5372+-1.3749 deltablue 125.7576+-1.3146 123.5276+-1.6882 might be 1.0181x faster earley-boyer 89.5661+-1.4958 88.6223+-1.0999 might be 1.0107x faster raytrace 72.2770+-3.5669 ? 75.2735+-6.0941 ? might be 1.0415x slower regexp 97.4348+-1.9479 96.3028+-1.6357 might be 1.0118x faster richards 96.6270+-1.3464 ? 96.6683+-0.7740 ? splay 72.6034+-0.7970 ? 73.5763+-1.2637 ? might be 1.0134x slower <arithmetic> 91.0185+-0.8110 90.9297+-0.9566 might be 1.0010x faster <geometric> * 89.4889+-0.8694 ? 89.5715+-0.9885 ? might be 1.0009x slower <harmonic> 88.0656+-0.9307 ? 88.3008+-1.0275 ? might be 1.0027x slower TipOfTree MyChanges Octane and V8v7: encrypt 0.41046+-0.00436 0.40785+-0.00219 decrypt 7.10272+-0.05968 ? 7.15731+-0.05740 ? deltablue x2 0.54021+-0.00361 ? 0.54756+-0.00774 ? might be 1.0136x slower earley 0.89679+-0.00278 ? 0.97012+-0.07846 ? might be 1.0818x slower boyer 11.24549+-0.09139 11.18602+-0.04511 raytrace x2 4.58663+-0.12301 ^ 4.43304+-0.02773 ^ definitely 1.0346x faster regexp x2 29.75265+-0.45356 ? 30.54737+-0.66003 ? might be 1.0267x slower richards x2 0.25136+-0.00382 ^ 0.24377+-0.00143 ^ definitely 1.0311x faster splay x2 0.73736+-0.01549 ? 0.73868+-0.00995 ? navier-stokes x2 12.21805+-0.10932 ? 12.26545+-0.09276 ? closure 0.61456+-0.00888 0.60288+-0.00768 might be 1.0194x faster jquery 8.98739+-0.11415 ? 9.26017+-0.32634 ? might be 1.0304x slower gbemu x2 257.85394+-6.27071 ? 261.57431+-7.76255 ? might be 1.0144x slower box2d x2 29.70953+-0.36182 29.16234+-0.23987 might be 1.0188x faster V8v7: <arithmetic> 7.23925+-0.05952 ? 7.32956+-0.07831 ? might be 1.0125x slower <geometric> * 2.34150+-0.01309 ? 2.34608+-0.00983 ? might be 1.0020x slower <harmonic> 0.84991+-0.00643 0.84337+-0.00437 might be 1.0078x faster Octane including V8v7: <arithmetic> 31.84349+-0.58286 ? 32.20952+-0.68532 ? might be 1.0115x slower <geometric> * 4.52411+-0.02142 ? 4.53065+-0.01421 ? might be 1.0014x slower <harmonic> 1.06587+-0.00706 1.05691+-0.00534 might be 1.0085x faster TipOfTree MyChanges Kraken: ai-astar 357.948+-5.092 355.504+-3.129 audio-beat-detection 187.796+-1.968 187.056+-1.766 audio-dft 310.756+-10.690 301.022+-4.719 might be 1.0323x faster audio-fft 114.553+-1.247 ? 114.723+-1.566 ? audio-oscillator 238.018+-9.183 ? 238.881+-8.498 ? imaging-darkroom 277.874+-8.638 270.179+-3.767 might be 1.0285x faster imaging-desaturate 241.861+-4.966 236.334+-2.752 might be 1.0234x faster imaging-gaussian-blur 502.908+-9.151 490.443+-3.328 might be 1.0254x faster json-parse-financial 59.650+-0.682 ? 60.270+-0.696 ? might be 1.0104x slower json-stringify-tinderbox 98.860+-1.256 98.268+-1.766 stanford-crypto-aes 86.140+-6.473 81.956+-1.380 might be 1.0511x faster stanford-crypto-ccm 76.357+-2.825 73.444+-1.155 might be 1.0397x faster stanford-crypto-pbkdf2 192.232+-4.005 191.911+-2.062 stanford-crypto-sha256-iterative 99.596+-1.943 98.814+-1.399 <arithmetic> * 203.182+-1.760 ^ 199.915+-0.874 ^ definitely 1.0163x faster <geometric> 167.884+-1.834 165.505+-0.627 might be 1.0144x faster <harmonic> 138.634+-2.086 136.822+-0.533 might be 1.0132x faster TipOfTree MyChanges JSRegress: adapt-to-double-divide 91.8639+-2.0287 89.1105+-0.9736 might be 1.0309x faster aliased-arguments-getbyval 1.0095+-0.0410 ? 1.0517+-0.0673 ? might be 1.0419x slower allocate-big-object 3.0032+-0.1584 ^ 2.7779+-0.0643 ^ definitely 1.0811x faster arity-mismatch-inlining 0.7982+-0.0830 0.7285+-0.0222 might be 1.0957x faster big-int-mul 8.9993+-0.3919 8.7294+-0.1179 might be 1.0309x faster boolean-test 3.7191+-0.0921 ? 3.7941+-0.1166 ? might be 1.0202x slower cast-int-to-double 12.7302+-0.1579 ? 12.9223+-0.2092 ? might be 1.0151x slower cfg-simplify 3.5500+-0.0610 ? 3.5696+-0.0988 ? cmpeq-obj-to-obj-other 10.2961+-0.1348 ? 10.3991+-0.1226 ? might be 1.0100x slower constant-test 6.0404+-0.0741 ? 6.0555+-0.0861 ? direct-arguments-getbyval 0.8972+-0.0396 ? 0.9069+-0.0337 ? might be 1.0109x slower double-pollution-getbyval 11.1918+-0.2306 ? 11.3005+-0.2470 ? double-pollution-putbyoffset 4.9333+-0.1059 ? 5.0053+-0.0898 ? might be 1.0146x slower external-arguments-getbyval 2.5424+-0.1437 ? 2.6539+-0.0745 ? might be 1.0438x slower external-arguments-putbyval 4.0813+-0.1483 ? 4.0905+-0.1012 ? Float32Array-matrix-mult 17.7453+-1.1127 17.4968+-0.7434 might be 1.0142x faster fold-double-to-int 21.8881+-0.4150 21.8151+-0.3642 function-dot-apply 2.8096+-0.0661 ? 2.8118+-0.0832 ? function-test 4.0608+-0.0939 ? 4.1866+-0.1328 ? might be 1.0310x slower indexed-properties-in-objects 3.9400+-0.1107 ? 3.9590+-0.0879 ? inline-arguments-access 1.2780+-0.0368 ? 1.2977+-0.0376 ? might be 1.0154x slower inline-arguments-local-escape 27.3004+-0.3273 ? 27.6429+-0.5216 ? might be 1.0125x slower int-overflow-local 107.1124+-1.5697 106.3915+-1.1041 Int16Array-bubble-sort 28.5701+-0.4341 28.1432+-0.3744 might be 1.0152x faster Int16Array-load-int-mul 2.0907+-0.0459 ? 2.1177+-0.0631 ? might be 1.0129x slower Int8Array-load 4.8888+-0.1116 4.8831+-0.0831 integer-divide 14.2001+-0.1682 ? 15.0331+-1.0033 ? might be 1.0587x slower make-indexed-storage 3.5183+-0.1191 ? 3.5426+-0.0943 ? method-on-number 197.5854+-4.0163 190.3548+-3.2160 might be 1.0380x faster new-array-dead 26.2664+-0.3050 ? 26.7783+-0.3547 ? might be 1.0195x slower new-array-push 6.8376+-0.1216 ? 6.8988+-0.1411 ? number-test 3.6717+-0.0736 ? 3.8061+-0.1121 ? might be 1.0366x slower object-test 4.0267+-0.0854 ? 4.0859+-0.1220 ? might be 1.0147x slower poly-stricteq 92.0656+-2.4375 89.8976+-1.1646 might be 1.0241x faster rare-osr-exit-on-local 171.6046+-0.3408 171.5399+-0.5757 simple-activation-demo 33.9438+-0.2597 ? 34.9816+-2.1346 ? might be 1.0306x slower slow-array-profile-convergence 3.9473+-0.0956 ? 4.0459+-0.0887 ? might be 1.0250x slower slow-convergence 69.6105+-0.6313 ? 70.4170+-1.2725 ? might be 1.0116x slower sparse-conditional 1.2655+-0.0303 1.2547+-0.0378 string-hash 4.9006+-0.0686 4.8647+-0.0818 string-test 3.5092+-0.0773 3.4528+-0.0808 might be 1.0163x faster structure-hoist-over-transitions 3.4126+-0.1315 3.3467+-0.0704 might be 1.0197x faster tear-off-arguments 3.4680+-0.1005 ? 3.5210+-0.0916 ? might be 1.0153x slower to-int32-boolean 23.0168+-0.3291 ? 23.2779+-0.3128 ? might be 1.0113x slower undefined-test 3.7283+-0.0877 3.7203+-0.0797 <arithmetic> 23.5093+-0.1260 23.3036+-0.1139 might be 1.0088x faster <geometric> * 7.8312+-0.0344 ? 7.8503+-0.0295 ? might be 1.0024x slower <harmonic> 3.8336+-0.0419 3.8310+-0.0285 might be 1.0007x faster TipOfTree MyChanges All benchmarks: <arithmetic> 47.7498+-0.3231 47.3413+-0.2810 might be 1.0086x faster <geometric> 11.2911+-0.0427 ? 11.2949+-0.0346 ? might be 1.0003x slower <harmonic> 3.0114+-0.0191 2.9989+-0.0123 might be 1.0042x faster TipOfTree MyChanges Geomean of preferred means: <scaled-result> 21.8993+-0.1028 21.8710+-0.0782 might be 1.0013x faster
Comment on attachment 165881 [details] A Simple Patch Clearing flags on attachment: 165881 Committed r129773: <http://trac.webkit.org/changeset/129773>
All reviewed patches have been landed. Closing bug.