RESOLVED FIXED Bug 125523
Rationalize DFG DCE
https://bugs.webkit.org/show_bug.cgi?id=125523
Summary Rationalize DFG DCE
Filip Pizlo
Reported 2013-12-10 11:00:08 PST
The current DFG DCE has some holes: - It's generally unsound with respect to forward-exiting nodes. - It intentionally avoids many opportunities for DCE, thereby masking the above bug, bug probably costing us some performance. We should be more aggressive about DCE especially when it's sound to do so, and we should make it work right for forward exits.
Attachments
work in progress (15.51 KB, patch)
2013-12-10 11:00 PST, Filip Pizlo
no flags
more (16.15 KB, patch)
2013-12-15 14:27 PST, Filip Pizlo
no flags
the patch (21.70 KB, patch)
2014-01-01 09:47 PST, Filip Pizlo
mhahnenberg: review+
Filip Pizlo
Comment 1 2013-12-10 11:00:45 PST
Created attachment 218882 [details] work in progress I'm basically fixing bugs and then writing tests which reveal more bugs. It's kind of fun.
Filip Pizlo
Comment 2 2013-12-15 14:27:30 PST
Filip Pizlo
Comment 3 2014-01-01 09:47:32 PST
Created attachment 220186 [details] the patch
Mark Hahnenberg
Comment 4 2014-01-02 10:26:26 PST
Comment on attachment 220186 [details] the patch r=me
Mark Hahnenberg
Comment 5 2014-01-02 10:28:27 PST
(In reply to comment #4) > (From update of attachment 220186 [details]) > r=me You mentioned you wrote tests that revealed these bugs. Where are they?
Filip Pizlo
Comment 6 2014-01-02 10:31:16 PST
(In reply to comment #5) > (In reply to comment #4) > > (From update of attachment 220186 [details] [details]) > > r=me > > You mentioned you wrote tests that revealed these bugs. Where are they? Already landed in http://trac.webkit.org/changeset/161126
Mark Hahnenberg
Comment 7 2014-01-02 10:32:13 PST
(In reply to comment #6) > (In reply to comment #5) > > (In reply to comment #4) > > > (From update of attachment 220186 [details] [details] [details]) > > > r=me > > > > You mentioned you wrote tests that revealed these bugs. Where are they? > > Already landed in http://trac.webkit.org/changeset/161126 Boomshockalocka.
Filip Pizlo
Comment 8 2014-01-02 12:11:30 PST
These performance numbers are amusing. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r161126) "DCE" at /Volumes/Data/fromMiniMe/tertiary/OpenSource/WebKitBuild/Release/jsc (r161126) Collected 10 samples per benchmark/VM, with 10 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 DCE SunSpider: 3d-cube 8.1320+-0.0595 ^ 7.6937+-0.0753 ^ definitely 1.0570x faster 3d-morph 8.8562+-0.1206 8.8468+-0.0710 3d-raytrace 9.5668+-0.0715 9.4886+-0.1086 access-binary-trees 2.1611+-0.0539 2.1427+-0.0184 access-fannkuch 8.1500+-0.0614 8.0368+-0.0836 might be 1.0141x faster access-nbody 4.2495+-0.0444 ? 4.2820+-0.0612 ? access-nsieve 5.0173+-0.0289 ? 5.0355+-0.0764 ? bitops-3bit-bits-in-byte 2.0006+-0.0246 ? 2.0126+-0.0419 ? bitops-bits-in-byte 7.1954+-0.0622 7.1838+-0.0709 bitops-bitwise-and 3.0898+-0.0322 3.0650+-0.0459 bitops-nsieve-bits 4.7083+-0.0139 ! 5.2769+-0.0226 ! definitely 1.1208x slower controlflow-recursive 3.2210+-0.0543 3.1919+-0.0292 crypto-aes 5.6242+-0.0692 5.5986+-0.0223 crypto-md5 3.4149+-0.0277 3.3888+-0.0151 crypto-sha1 3.0272+-0.0075 ? 3.0329+-0.0204 ? date-format-tofte 11.8652+-0.1693 ? 11.9735+-0.1451 ? date-format-xparb 8.8528+-0.0729 ? 9.1841+-0.2584 ? might be 1.0374x slower math-cordic 4.3948+-0.1352 4.3590+-0.1254 math-partial-sums 10.3029+-0.0710 10.3012+-0.0967 math-spectral-norm 2.7991+-0.0266 2.7938+-0.0070 regexp-dna 13.0390+-0.1332 13.0283+-0.1046 string-base64 5.6473+-0.0358 5.6342+-0.0500 string-fasta 10.4253+-0.0884 10.4026+-0.0867 string-tagcloud 15.7119+-0.0732 15.5803+-0.0867 string-unpack-code 31.3378+-0.2592 ? 31.3383+-0.1334 ? string-validate-input 7.0740+-0.0547 ? 7.1454+-0.1526 ? might be 1.0101x slower <arithmetic> * 7.6871+-0.0147 ? 7.6930+-0.0156 ? might be 1.0008x slower <geometric> 6.1749+-0.0195 ? 6.1859+-0.0161 ? might be 1.0018x slower <harmonic> 5.0842+-0.0248 ? 5.0932+-0.0186 ? might be 1.0018x slower TipOfTree DCE LongSpider: 3d-cube 2675.6902+-9.5222 ^ 2135.7886+-8.7532 ^ definitely 1.2528x faster 3d-morph 1496.3218+-1.6131 ? 1499.4468+-7.1538 ? 3d-raytrace 1506.0730+-8.5439 1504.3271+-4.4835 access-binary-trees 2467.2312+-9.2616 ? 2482.3215+-8.7034 ? access-fannkuch 657.0691+-0.6737 656.1850+-2.7354 access-nbody 1499.3143+-4.6995 1496.5226+-1.7041 access-nsieve 1554.4675+-5.2996 1552.1214+-5.0934 bitops-3bit-bits-in-byte 126.0117+-0.1696 ? 126.2113+-0.1503 ? bitops-bits-in-byte 598.5246+-3.6344 ? 602.3112+-4.2488 ? bitops-nsieve-bits 1051.9732+-2.1172 ! 1149.9595+-2.2812 ! definitely 1.0931x slower controlflow-recursive 1474.1888+-0.7479 1473.4970+-0.4625 crypto-aes 1659.8341+-10.3354 1657.6107+-2.5116 crypto-md5 1241.3078+-0.7803 ? 1241.5600+-3.1818 ? crypto-sha1 1630.2178+-6.9962 1626.3382+-5.2377 date-format-tofte 1197.6947+-8.5854 ? 1219.8375+-14.9319 ? might be 1.0185x slower date-format-xparb 1465.6775+-21.1772 ? 1497.4755+-22.6356 ? might be 1.0217x slower math-cordic 1736.4209+-0.4231 ? 1760.4699+-52.5357 ? might be 1.0138x slower math-partial-sums 1307.9766+-2.7588 1304.7951+-2.5959 math-spectral-norm 1826.1313+-0.5136 ? 1826.8634+-0.7156 ? string-base64 506.0616+-2.1053 504.7036+-2.5044 string-fasta 988.4543+-3.2385 ! 996.6150+-3.4076 ! definitely 1.0083x slower string-tagcloud 391.0838+-2.3348 389.1763+-1.2255 <arithmetic> 1320.8057+-1.1452 ^ 1304.7335+-2.0746 ^ definitely 1.0123x faster <geometric> * 1122.6361+-1.0896 ^ 1118.6245+-1.3779 ^ definitely 1.0036x faster <harmonic> 810.2759+-0.9796 ? 811.2115+-0.5234 ? might be 1.0012x slower TipOfTree DCE V8Spider: crypto 80.3342+-0.9145 79.4921+-0.3032 might be 1.0106x faster deltablue 100.5419+-0.6083 99.6720+-0.7963 earley-boyer 73.8694+-0.3580 73.6717+-1.0037 raytrace 45.8973+-0.1791 45.6676+-0.2451 regexp 100.6413+-0.2185 ^ 100.0988+-0.2613 ^ definitely 1.0054x faster richards 131.4713+-1.3796 ? 132.5271+-1.4034 ? splay 46.0539+-0.3213 ? 46.1576+-0.4904 ? <arithmetic> 82.6870+-0.1628 82.4695+-0.2822 might be 1.0026x faster <geometric> * 77.4268+-0.1198 77.1818+-0.2234 might be 1.0032x faster <harmonic> 72.1776+-0.1149 71.9455+-0.2089 might be 1.0032x faster TipOfTree DCE Octane and V8v7: encrypt 0.46873+-0.00052 ^ 0.46550+-0.00040 ^ definitely 1.0069x faster decrypt 8.59196+-0.01228 8.58423+-0.01822 deltablue x2 0.57708+-0.01611 0.57054+-0.00630 might be 1.0115x faster earley 0.91690+-0.00671 0.90526+-0.00567 might be 1.0129x faster boyer 12.47120+-0.04893 ? 12.60686+-0.23651 ? might be 1.0109x slower raytrace x2 4.28358+-0.03112 ? 4.30765+-0.02617 ? regexp x2 32.95508+-0.15442 32.87670+-0.19189 richards x2 0.43680+-0.00667 0.43480+-0.00470 splay x2 0.63218+-0.00565 0.62878+-0.00259 navier-stokes x2 10.70258+-0.00512 ? 10.70921+-0.00921 ? closure 0.43163+-0.00209 ? 0.43412+-0.00102 ? jquery 6.33786+-0.01548 ? 6.36299+-0.00970 ? gbemu x2 71.68342+-1.16220 71.12748+-0.49741 mandreel x2 136.44194+-1.56943 135.34330+-0.54006 pdfjs x2 101.93407+-0.24648 ^ 101.41015+-0.22285 ^ definitely 1.0052x faster box2d x2 34.87811+-0.14200 34.86526+-0.19230 V8v7: <arithmetic> 7.60146+-0.01806 7.60108+-0.02210 might be 1.0001x faster <geometric> * 2.52119+-0.01383 2.51425+-0.00265 might be 1.0028x faster <harmonic> 1.04250+-0.01005 1.03571+-0.00285 might be 1.0066x faster Octane including V8v7: <arithmetic> 31.47184+-0.11227 31.30410+-0.07115 might be 1.0054x faster <geometric> * 6.98285+-0.02704 6.96234+-0.00672 might be 1.0029x faster <harmonic> 1.44908+-0.01183 1.44212+-0.00361 might be 1.0048x faster TipOfTree DCE Kraken: ai-astar 494.502+-0.566 ? 494.564+-0.541 ? audio-beat-detection 225.736+-0.790 ? 226.589+-3.620 ? audio-dft 289.631+-1.258 289.521+-0.737 audio-fft 130.842+-0.182 130.801+-0.217 audio-oscillator 244.344+-0.364 244.341+-0.264 imaging-darkroom 285.905+-0.718 ? 286.349+-0.764 ? imaging-desaturate 158.405+-0.242 ? 158.508+-0.208 ? imaging-gaussian-blur 363.021+-0.276 362.979+-0.166 json-parse-financial 79.870+-0.204 ! 81.111+-0.343 ! definitely 1.0155x slower json-stringify-tinderbox 103.794+-0.357 ? 104.679+-1.411 ? stanford-crypto-aes 91.179+-0.690 ? 91.701+-0.544 ? stanford-crypto-ccm 101.162+-0.810 100.020+-1.655 might be 1.0114x faster stanford-crypto-pbkdf2 261.753+-1.743 261.565+-1.270 stanford-crypto-sha256-iterative 114.651+-1.437 113.760+-0.271 <arithmetic> * 210.343+-0.255 ? 210.463+-0.271 ? might be 1.0006x slower <geometric> 180.506+-0.291 ? 180.695+-0.218 ? might be 1.0010x slower <harmonic> 155.971+-0.313 ? 156.264+-0.268 ? might be 1.0019x slower TipOfTree DCE JSRegress: adapt-to-double-divide 22.8593+-0.0926 22.8114+-0.1012 aliased-arguments-getbyval 1.0122+-0.0041 1.0090+-0.0042 allocate-big-object 3.0523+-0.0166 ? 3.0718+-0.0214 ? arity-mismatch-inlining 0.9869+-0.0086 0.9831+-0.0145 array-access-polymorphic-structure 10.0803+-0.1024 10.0572+-0.0927 array-nonarray-polymorhpic-access 60.5396+-4.5513 58.1722+-0.1349 might be 1.0407x faster array-with-double-add 5.8038+-0.0221 5.8036+-0.0193 array-with-double-increment 4.4030+-0.0447 4.3366+-0.0454 might be 1.0153x faster array-with-double-mul-add 6.8688+-0.0539 6.8233+-0.0718 array-with-double-sum 8.1067+-0.0539 8.0504+-0.0214 array-with-int32-add-sub 10.4534+-0.1007 ? 10.5273+-0.0834 ? array-with-int32-or-double-sum 8.0266+-0.0713 8.0098+-0.0120 ArrayBuffer-DataView-alloc-large-long-lived 117.7381+-1.0657 ? 120.0707+-2.0613 ? might be 1.0198x slower ArrayBuffer-DataView-alloc-long-lived 31.5309+-0.1607 ! 32.6938+-0.4080 ! definitely 1.0369x slower ArrayBuffer-Int32Array-byteOffset 6.0505+-0.0152 6.0299+-0.0429 ArrayBuffer-Int8Array-alloc-huge-long-lived 214.3850+-2.6423 ? 214.9787+-2.2152 ? ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 166.0585+-1.1524 ? 166.8090+-0.7698 ? ArrayBuffer-Int8Array-alloc-large-long-lived 118.4252+-1.5455 ? 119.8844+-0.8694 ? might be 1.0123x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 47.8146+-0.1994 ! 48.8319+-0.4367 ! definitely 1.0213x slower ArrayBuffer-Int8Array-alloc-long-lived 30.4448+-0.2339 ! 31.2534+-0.3940 ! definitely 1.0266x slower ArrayBuffer-Int8Array-alloc 26.4802+-0.1498 ? 27.3137+-0.7239 ? might be 1.0315x slower asmjs_bool_bug 9.2674+-0.0683 ? 9.3199+-0.1088 ? basic-set 19.8975+-0.1973 19.8824+-0.1379 big-int-mul 5.5806+-0.0301 ? 5.5947+-0.0297 ? boolean-test 4.4702+-0.0540 ? 4.4843+-0.0183 ? branch-fold 5.0226+-0.0161 ^ 4.9255+-0.0111 ^ definitely 1.0197x faster by-val-generic 12.3751+-0.1158 ? 12.6058+-0.1538 ? might be 1.0186x slower captured-assignments 0.6586+-0.0263 0.6506+-0.0218 might be 1.0123x faster cast-int-to-double 12.6064+-0.1147 12.4681+-0.1117 might be 1.0111x faster cell-argument 15.9950+-0.4319 ? 16.1763+-0.3030 ? might be 1.0113x slower cfg-simplify 3.9878+-0.0491 ? 4.0090+-0.0076 ? chain-custom-getter 157.8128+-0.1168 ? 160.6441+-5.6036 ? might be 1.0179x slower chain-getter-access 487.5037+-5.3657 ? 487.9003+-4.3024 ? cmpeq-obj-to-obj-other 12.7324+-0.5777 12.6502+-0.3113 constant-test 8.9413+-0.0702 ? 8.9579+-0.1125 ? DataView-custom-properties 135.1934+-0.7461 ! 137.0848+-1.0515 ! definitely 1.0140x slower delay-tear-off-arguments-strictmode 3.6904+-0.0205 3.6813+-0.0076 destructuring-arguments-length 172.6619+-1.1707 ! 175.5115+-1.2995 ! definitely 1.0165x slower destructuring-arguments 8.9256+-0.0916 8.9091+-0.0694 destructuring-swap 8.6853+-0.1108 ? 8.7186+-0.1006 ? direct-arguments-getbyval 0.8777+-0.0043 ? 0.8789+-0.0041 ? double-get-by-val-out-of-bounds 7.6496+-0.0754 ? 7.6708+-0.1086 ? double-pollution-getbyval 11.0966+-0.1477 ? 11.1479+-0.0583 ? double-pollution-putbyoffset 6.1260+-0.0391 ? 6.1777+-0.0690 ? double-to-int32-typed-array-no-inline 2.6452+-0.0107 2.6387+-0.0083 double-to-int32-typed-array 2.2887+-0.0110 ? 2.3040+-0.0176 ? double-to-uint32-typed-array-no-inline 2.8068+-0.0090 2.8048+-0.0050 double-to-uint32-typed-array 2.5637+-0.0055 ? 2.5653+-0.0078 ? empty-string-plus-int 10.8567+-0.0828 ! 11.0459+-0.0816 ! definitely 1.0174x slower emscripten-cube2hash 55.4918+-0.1372 ? 55.5970+-0.2883 ? emscripten-memops 7053.6782+-11.7968 ? 7074.9394+-39.5886 ? external-arguments-getbyval 2.1720+-0.0265 2.1574+-0.0171 external-arguments-putbyval 3.1975+-0.1490 3.0694+-0.0107 might be 1.0417x faster fixed-typed-array-storage-var-index 1.4187+-0.0050 1.4164+-0.0050 fixed-typed-array-storage 1.0180+-0.0193 1.0073+-0.0049 might be 1.0106x faster Float32Array-matrix-mult 6.3944+-0.0400 ? 6.4376+-0.0715 ? Float32Array-to-Float64Array-set 93.9259+-1.2488 92.8899+-0.8880 might be 1.0112x faster Float64Array-alloc-long-lived 103.7096+-0.7528 ? 104.0691+-0.5559 ? Float64Array-to-Int16Array-set 118.6830+-0.6956 118.1415+-0.3536 fold-double-to-int 20.5385+-0.1986 20.3307+-0.1971 might be 1.0102x faster for-of-iterate-array-entries 8.8238+-0.1682 8.6866+-0.1287 might be 1.0158x faster for-of-iterate-array-keys 3.4340+-0.0306 3.4311+-0.0346 for-of-iterate-array-values 3.0181+-0.1249 2.9730+-0.0407 might be 1.0152x faster function-dot-apply 3.1571+-0.0549 3.1384+-0.0210 function-test 4.9095+-0.0328 ? 4.9124+-0.0974 ? get-by-id-chain-from-try-block 7.9251+-0.1155 ? 7.9501+-0.1239 ? get-by-id-proto-or-self 25.9705+-0.2477 25.9295+-0.1509 get-by-id-self-or-proto 24.0295+-0.6459 ? 24.1772+-0.5920 ? get-by-val-out-of-bounds 7.4542+-0.0844 ? 7.4570+-0.1115 ? get_callee_monomorphic 4.9742+-0.0964 ? 5.0257+-0.0181 ? might be 1.0103x slower get_callee_polymorphic 4.8357+-0.0128 ? 4.8574+-0.0284 ? global-var-const-infer-fire-from-opt 1.0424+-0.0679 1.0340+-0.0470 global-var-const-infer 0.8168+-0.0099 0.8163+-0.0043 HashMap-put-get-iterate-keys 42.8648+-0.3976 ? 43.2785+-0.7633 ? HashMap-put-get-iterate 54.8255+-0.7414 ? 55.2225+-0.8674 ? HashMap-string-put-get-iterate 50.6311+-0.2401 ! 51.8862+-0.3626 ! definitely 1.0248x slower imul-double-only 17.7317+-0.1549 ? 17.7727+-0.1732 ? imul-int-only 14.8317+-0.0981 ? 15.0552+-0.1474 ? might be 1.0151x slower imul-mixed 21.8837+-0.1313 ? 21.9063+-0.0887 ? in-four-cases 25.9271+-0.0909 ? 25.9371+-0.0267 ? in-one-case-false 12.1547+-0.1459 12.1154+-0.1306 in-one-case-true 12.0932+-0.1329 ? 12.1537+-0.1059 ? in-two-cases 12.8499+-0.0799 ? 12.9063+-0.1555 ? indexed-properties-in-objects 4.2403+-0.0161 4.2172+-0.0388 infer-closure-const-then-mov-no-inline 15.3670+-0.1335 15.2985+-0.1004 infer-closure-const-then-mov 28.8862+-0.1233 ? 28.9677+-0.0798 ? infer-closure-const-then-put-to-scope-no-inline 17.7502+-0.0594 ? 17.7759+-0.0612 ? infer-closure-const-then-put-to-scope 36.1183+-0.1365 ? 36.2132+-0.2550 ? infer-closure-const-then-reenter-no-inline 84.3414+-0.1172 ? 84.3630+-0.0975 ? infer-closure-const-then-reenter 36.1757+-0.1739 36.1609+-0.1712 infer-one-time-closure-ten-vars 29.0554+-0.1007 ? 29.0760+-0.1582 ? infer-one-time-closure-two-vars 28.8878+-0.1133 28.8606+-0.0969 infer-one-time-closure 28.8332+-0.1413 28.8123+-0.1073 infer-one-time-deep-closure 58.3487+-0.3317 ? 58.4854+-0.1330 ? inline-arguments-access 1.7127+-0.0070 ? 1.7156+-0.0287 ? inline-arguments-aliased-access 1.8594+-0.0556 1.8419+-0.0427 inline-arguments-local-escape 22.3383+-0.1726 ! 23.5935+-0.2988 ! definitely 1.0562x slower inline-get-scoped-var 7.5385+-0.0882 7.4632+-0.0859 might be 1.0101x faster inlined-put-by-id-transition 15.2620+-0.3443 ? 15.6009+-0.3636 ? might be 1.0222x slower int-or-other-abs-then-get-by-val 9.5044+-0.0741 ? 9.5774+-0.1180 ? int-or-other-abs-zero-then-get-by-val 37.3098+-0.0212 ? 37.3962+-0.1415 ? int-or-other-add-then-get-by-val 10.6016+-0.1098 10.5979+-0.1135 int-or-other-add 10.9370+-0.0684 ? 11.0034+-0.0973 ? int-or-other-div-then-get-by-val 6.4366+-0.0240 6.3775+-0.1153 int-or-other-max-then-get-by-val 8.9063+-0.1989 8.8128+-0.0978 might be 1.0106x faster int-or-other-min-then-get-by-val 7.1263+-0.0399 ? 7.1772+-0.1137 ? int-or-other-mod-then-get-by-val 6.2755+-0.0427 ? 6.2781+-0.0151 ? int-or-other-mul-then-get-by-val 6.6869+-0.0359 6.6251+-0.0751 int-or-other-neg-then-get-by-val 7.9903+-0.0728 ? 8.0467+-0.0772 ? int-or-other-neg-zero-then-get-by-val 37.0052+-0.1844 ? 37.0304+-0.2505 ? int-or-other-sub-then-get-by-val 10.6947+-0.0621 10.5641+-0.1227 might be 1.0124x faster int-or-other-sub 8.9484+-0.0893 ? 9.0058+-0.0536 ? int-overflow-local 6.5227+-0.0752 ? 6.5610+-0.0239 ? Int16Array-alloc-long-lived 68.4768+-0.6734 68.0106+-0.3640 Int16Array-bubble-sort-with-byteLength 48.8377+-0.0864 ? 48.9661+-0.1100 ? Int16Array-bubble-sort 48.0762+-0.3035 47.9708+-0.2400 Int16Array-load-int-mul 1.8204+-0.0052 ? 1.8430+-0.0509 ? might be 1.0124x slower Int16Array-to-Int32Array-set 88.9717+-0.6498 ! 91.4866+-0.8540 ! definitely 1.0283x slower Int32Array-alloc-huge-long-lived 703.7717+-2.5505 ? 705.3508+-4.9291 ? Int32Array-alloc-huge 807.8832+-9.0868 ? 810.0925+-6.2381 ? Int32Array-alloc-large-long-lived 980.7650+-9.1557 975.3432+-13.9233 Int32Array-alloc-large 44.6800+-0.8181 ? 45.4107+-0.5286 ? might be 1.0164x slower Int32Array-alloc-long-lived 80.8176+-0.7152 80.5018+-0.5334 Int32Array-alloc 4.5302+-0.0092 ? 4.5434+-0.0094 ? Int32Array-Int8Array-view-alloc 15.3166+-0.1997 15.0432+-0.0968 might be 1.0182x faster int52-spill 12.6114+-0.2053 ! 13.0172+-0.0959 ! definitely 1.0322x slower Int8Array-alloc-long-lived 66.8033+-0.7250 ? 67.2700+-0.5596 ? Int8Array-load-with-byteLength 5.0690+-0.0073 5.0371+-0.0655 Int8Array-load 5.0646+-0.0157 5.0067+-0.0664 might be 1.0116x faster integer-divide 15.1049+-0.1350 15.0654+-0.0765 integer-modulo 2.0531+-0.0124 ? 2.0622+-0.0160 ? large-int-captured 9.8604+-0.1046 ! 10.0750+-0.0953 ! definitely 1.0218x slower large-int-neg 26.2066+-0.1656 ? 26.3054+-0.1489 ? large-int 23.0784+-0.1363 ? 23.1353+-0.1114 ? logical-not 10.8477+-0.1825 10.6363+-0.2759 might be 1.0199x faster lots-of-fields 12.4652+-0.1081 ? 12.4762+-0.0832 ? make-indexed-storage 4.2821+-0.1720 ? 4.2848+-0.1355 ? make-rope-cse 6.1791+-0.0759 6.1192+-0.0919 marsaglia-larger-ints 111.8697+-0.0945 ? 112.0377+-0.2764 ? marsaglia-osr-entry 47.0722+-0.0476 47.0576+-0.1018 marsaglia 463.6651+-0.5580 463.6609+-0.2434 method-on-number 30.2155+-0.7317 29.9918+-0.4068 negative-zero-divide 0.4249+-0.0018 0.4249+-0.0016 negative-zero-modulo 0.4131+-0.0097 0.4106+-0.0021 negative-zero-negate 0.3908+-0.0023 ? 0.4014+-0.0211 ? might be 1.0272x slower nested-function-parsing-random 380.9223+-0.4684 ! 386.2527+-0.4867 ! definitely 1.0140x slower nested-function-parsing 47.4592+-0.1365 47.4522+-0.0944 new-array-buffer-dead 3.7884+-0.0170 ? 3.8020+-0.0288 ? new-array-buffer-push 10.6601+-0.1205 10.5779+-0.1388 new-array-dead 28.6397+-0.1908 28.5429+-0.0684 new-array-push 6.9986+-0.0795 6.9821+-0.0655 number-test 4.4257+-0.0311 ? 4.4411+-0.0233 ? object-closure-call 13.5417+-0.1035 13.4970+-0.1196 object-test 4.8097+-0.0305 4.7873+-0.0399 poly-stricteq 87.8392+-2.9136 87.5109+-1.0741 polymorphic-structure 21.0910+-0.3142 ? 21.2537+-0.3102 ? polyvariant-monomorphic-get-by-id 11.9544+-0.0994 ? 12.0284+-0.1206 ? proto-custom-getter 157.8363+-0.1937 157.7810+-0.1205 proto-getter-access 490.1356+-5.5485 ? 492.0925+-8.3112 ? put-by-id 19.6103+-0.3958 19.5849+-0.3579 put-by-val-large-index-blank-indexing-type 20.6630+-0.1114 ? 20.7681+-0.2149 ? put-by-val-machine-int 3.3644+-0.0065 3.3636+-0.0064 rare-osr-exit-on-local 20.2145+-0.0741 ? 20.2439+-0.1306 ? register-pressure-from-osr 31.4152+-0.1191 31.4148+-0.0791 simple-activation-demo 35.1895+-0.0742 ? 35.3089+-0.1711 ? simple-custom-getter 509.8198+-21.6940 ? 512.4283+-21.6634 ? simple-getter-access 781.7272+-8.0181 ? 792.5346+-9.3028 ? might be 1.0138x slower slow-array-profile-convergence 4.0938+-0.0093 ? 4.1161+-0.0357 ? slow-convergence 4.5775+-0.0179 4.5761+-0.0276 sparse-conditional 1.4903+-0.0145 1.4866+-0.0077 splice-to-remove 77.1941+-0.1392 ^ 76.9320+-0.1089 ^ definitely 1.0034x faster stepanov_container 10217.8075+-29.3011 ? 10218.7680+-51.0035 ? string-concat-object 3.2541+-0.0507 3.2522+-0.0421 string-concat-pair-object 3.1801+-0.0353 ? 3.1873+-0.0311 ? string-concat-pair-simple 17.3315+-0.2676 17.1496+-0.3443 might be 1.0106x faster string-concat-simple 17.6057+-0.4271 17.4161+-0.2204 might be 1.0109x faster string-cons-repeat 10.8365+-0.0405 ? 10.8591+-0.0258 ? string-cons-tower 11.3451+-0.0619 ? 11.3542+-0.0687 ? string-equality 42.7404+-0.1089 ? 42.9544+-0.3919 ? string-get-by-val-big-char 12.6438+-0.1147 ! 13.0120+-0.2304 ! definitely 1.0291x slower string-get-by-val-out-of-bounds-insane 5.9141+-0.1524 5.7602+-0.0838 might be 1.0267x faster string-get-by-val-out-of-bounds 5.3204+-0.0620 5.3118+-0.0694 string-get-by-val 4.9320+-0.0266 ? 4.9509+-0.0188 ? string-hash 2.7850+-0.0047 ? 2.7869+-0.0034 ? string-long-ident-equality 39.1290+-0.0656 39.0690+-0.0785 string-repeat-arith 50.1005+-0.4834 49.9090+-0.2352 string-sub 105.2518+-0.6855 ^ 103.6332+-0.4101 ^ definitely 1.0156x faster string-test 4.4101+-0.0252 4.3985+-0.0303 string-var-equality 70.1130+-0.2520 70.0406+-0.2593 structure-hoist-over-transitions 3.5274+-0.0086 ? 3.5293+-0.0174 ? switch-char-constant 3.5053+-0.0133 ? 3.5455+-0.0624 ? might be 1.0115x slower switch-char 8.1342+-0.0810 8.1338+-0.1008 switch-constant 9.4414+-0.1131 9.3922+-0.1172 switch-string-basic-big-var 20.6388+-0.1413 20.5182+-0.0633 switch-string-basic-big 21.4133+-0.1823 ? 22.0182+-1.1166 ? might be 1.0282x slower switch-string-basic-var 20.3709+-0.1107 20.2532+-0.1068 switch-string-basic 22.0349+-0.6061 21.9281+-0.4823 switch-string-big-length-tower-var 28.9752+-0.1711 ? 29.0535+-0.1864 ? switch-string-length-tower-var 21.9839+-0.1965 21.9323+-0.0961 switch-string-length-tower 16.5716+-0.1015 16.5509+-0.0950 switch-string-short 16.6856+-0.1292 16.6261+-0.1348 switch 13.6412+-0.1041 ? 13.7697+-0.2146 ? tear-off-arguments-simple 2.4758+-0.0289 ^ 2.4151+-0.0047 ^ definitely 1.0251x faster tear-off-arguments 3.7056+-0.0190 3.7012+-0.0050 temporal-structure 17.1373+-0.0865 ? 17.1549+-0.0746 ? to-int32-boolean 21.7958+-0.2581 21.5461+-0.1318 might be 1.0116x faster undefined-test 4.6073+-0.0438 ? 4.6493+-0.0356 ? weird-inlining-const-prop 2.4606+-0.0833 2.4073+-0.0086 might be 1.0221x faster <arithmetic> 133.9567+-0.2813 ? 134.2444+-0.3872 ? might be 1.0021x slower <geometric> * 14.7848+-0.0135 ? 14.8030+-0.0100 ? might be 1.0012x slower <harmonic> 5.3116+-0.0166 5.3092+-0.0164 might be 1.0005x faster TipOfTree DCE All benchmarks: <arithmetic> 202.8464+-0.2198 ^ 201.8636+-0.3949 ^ definitely 1.0049x faster <geometric> 20.5436+-0.0156 ? 20.5530+-0.0086 ? might be 1.0005x slower <harmonic> 4.8533+-0.0168 4.8460+-0.0109 might be 1.0015x faster TipOfTree DCE Geomean of preferred means: <scaled-result> 49.3867+-0.0370 ^ 49.3281+-0.0210 ^ definitely 1.0012x faster
Filip Pizlo
Comment 9 2014-01-02 12:12:17 PST
Note You need to log in before you can comment on or make changes to this bug.