RESOLVED FIXED 147034
DFG should have some obvious mitigations against watching structures that are unprofitable to watch
https://bugs.webkit.org/show_bug.cgi?id=147034
Summary DFG should have some obvious mitigations against watching structures that are...
Filip Pizlo
Reported 2015-07-17 00:58:24 PDT
Patch forthcoming.
Attachments
work in progress (8.16 KB, patch)
2015-07-17 01:05 PDT, Filip Pizlo
no flags
the patch (7.33 KB, patch)
2015-07-17 14:31 PDT, Filip Pizlo
mark.lam: review+
Filip Pizlo
Comment 1 2015-07-17 01:05:34 PDT
Created attachment 256959 [details] work in progress
Filip Pizlo
Comment 2 2015-07-17 11:31:32 PDT
Currently performance below. Note that this might only make sense if it's done alongside https://bugs.webkit.org/show_bug.cgi?id=146929. I'm going to investigate the slow-downs and see if they're something we can work around, or they're something that the other bug will fix, or if it's something fundamental. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953) "LessStructureWatch" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r186953) Collected 6 samples per benchmark/VM, with 6 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 LessStructureWatch SunSpider: 3d-cube 5.1227+-0.0491 ? 5.1593+-0.1025 ? 3d-morph 5.8425+-0.1312 5.8416+-0.0865 3d-raytrace 7.0019+-0.8915 6.9184+-0.6295 might be 1.0121x faster access-binary-trees 2.3812+-0.0587 ? 2.5446+-0.4466 ? might be 1.0686x slower access-fannkuch 7.0317+-0.9407 ? 7.3988+-0.4166 ? might be 1.0522x slower access-nbody 2.8944+-0.1325 ? 2.9469+-0.2904 ? might be 1.0181x slower access-nsieve 3.2571+-0.1568 3.2338+-0.1478 bitops-3bit-bits-in-byte 1.6597+-0.0520 1.6486+-0.1077 bitops-bits-in-byte 3.7209+-0.0630 ? 3.7495+-0.0536 ? bitops-bitwise-and 2.1720+-0.0366 ? 2.2493+-0.0816 ? might be 1.0356x slower bitops-nsieve-bits 3.2525+-0.1521 3.1722+-0.0409 might be 1.0253x faster controlflow-recursive 2.2897+-0.0709 2.2845+-0.0544 crypto-aes 4.7708+-0.5618 4.5857+-0.1177 might be 1.0404x faster crypto-md5 3.1281+-0.1050 ^ 2.7908+-0.0384 ^ definitely 1.1209x faster crypto-sha1 3.0228+-0.3130 2.7477+-0.3608 might be 1.1001x faster date-format-tofte 9.2890+-0.0965 ? 9.3651+-0.1547 ? date-format-xparb 5.8549+-0.4024 ? 6.1161+-0.5163 ? might be 1.0446x slower math-cordic 3.2145+-0.4340 3.1781+-0.1413 might be 1.0114x faster math-partial-sums 5.3800+-0.2640 ? 5.5767+-0.3968 ? might be 1.0365x slower math-spectral-norm 2.1757+-0.2549 2.0241+-0.0779 might be 1.0749x faster regexp-dna 7.4585+-0.3387 ? 8.3974+-1.6250 ? might be 1.1259x slower string-base64 5.1164+-0.5744 ? 5.1879+-0.5853 ? might be 1.0140x slower string-fasta 6.7684+-0.2676 ? 7.3094+-1.6763 ? might be 1.0799x slower string-tagcloud 9.5443+-0.4640 9.3837+-0.9398 might be 1.0171x faster string-unpack-code 21.2838+-0.9582 ? 21.8983+-1.7160 ? might be 1.0289x slower string-validate-input 5.0706+-0.0670 ? 5.3722+-0.3742 ? might be 1.0595x slower <arithmetic> 5.3348+-0.0819 ? 5.4262+-0.1581 ? might be 1.0171x slower TipOfTree LessStructureWatch LongSpider: 3d-cube 1128.3142+-10.4038 ? 1129.4134+-7.7678 ? 3d-morph 1530.9549+-8.4739 1526.2681+-3.3230 3d-raytrace 677.1904+-8.4697 ? 692.9315+-36.7668 ? might be 1.0232x slower access-binary-trees 985.0105+-6.7469 ? 990.1519+-4.0768 ? access-fannkuch 337.0742+-8.4067 ? 358.9362+-16.0836 ? might be 1.0649x slower access-nbody 601.6986+-27.8461 590.5837+-2.3384 might be 1.0188x faster access-nsieve 483.4601+-17.9585 479.3842+-5.9034 bitops-3bit-bits-in-byte 46.3804+-2.6602 ? 46.6570+-2.0787 ? bitops-bits-in-byte 104.3365+-2.0953 103.5336+-2.6675 bitops-nsieve-bits 425.0335+-13.4224 418.2044+-2.6302 might be 1.0163x faster controlflow-recursive 467.2895+-0.5892 ! 478.5909+-9.0707 ! definitely 1.0242x slower crypto-aes 682.4941+-7.5115 ? 692.3256+-7.4216 ? might be 1.0144x slower crypto-md5 532.3827+-16.0736 ! 560.6565+-9.2776 ! definitely 1.0531x slower crypto-sha1 688.3394+-27.0506 669.4077+-3.9408 might be 1.0283x faster date-format-tofte 746.2266+-10.5141 730.8746+-8.3247 might be 1.0210x faster date-format-xparb 895.6254+-58.7206 847.4987+-33.4115 might be 1.0568x faster hash-map 172.8623+-3.2932 ? 174.8031+-5.2023 ? might be 1.0112x slower math-cordic 586.2472+-25.4200 581.6319+-4.0452 math-partial-sums 510.3378+-6.1348 ? 516.1380+-18.8141 ? might be 1.0114x slower math-spectral-norm 598.6473+-74.5283 579.1882+-25.8096 might be 1.0336x faster string-base64 408.5756+-5.6259 407.0890+-6.7018 string-fasta 419.7620+-3.3008 ? 425.6649+-13.6026 ? might be 1.0141x slower string-tagcloud 194.5754+-2.6413 ? 196.1025+-2.7159 ? <geometric> 461.1248+-2.0404 ? 461.8452+-2.0309 ? might be 1.0016x slower TipOfTree LessStructureWatch V8Spider: crypto 57.4730+-6.3130 ? 58.6360+-2.9606 ? might be 1.0202x slower deltablue 99.3115+-5.1755 ? 104.4810+-4.0975 ? might be 1.0521x slower earley-boyer 50.8027+-5.2431 46.8940+-1.1379 might be 1.0834x faster raytrace 38.4038+-2.1993 ? 38.7084+-1.2356 ? regexp 73.6573+-1.7138 ? 75.7203+-2.8910 ? might be 1.0280x slower richards 81.2666+-1.6698 80.2183+-1.8725 might be 1.0131x faster splay 38.5478+-1.2985 ? 40.3443+-1.5701 ? might be 1.0466x slower <geometric> 59.1841+-1.1347 ? 59.7420+-0.5038 ? might be 1.0094x slower TipOfTree LessStructureWatch Octane: encrypt 0.20510+-0.02170 0.20088+-0.00559 might be 1.0210x faster decrypt 3.27650+-0.04727 ! 3.67617+-0.31735 ! definitely 1.1220x slower deltablue x2 0.18832+-0.00164 ? 0.19501+-0.01732 ? might be 1.0355x slower earley 0.36576+-0.02773 0.35302+-0.00466 might be 1.0361x faster boyer 5.07114+-0.02547 ? 5.10443+-0.04142 ? navier-stokes x2 5.17140+-0.03399 5.16601+-0.01560 raytrace x2 1.33167+-0.10178 1.28104+-0.03330 might be 1.0395x faster richards x2 0.12873+-0.00118 ? 0.13352+-0.00838 ? might be 1.0372x slower splay x2 0.40113+-0.02583 0.38961+-0.00210 might be 1.0296x faster regexp x2 28.98852+-0.40597 28.93964+-0.13554 pdfjs x2 43.83459+-2.50410 43.29484+-0.38085 might be 1.0125x faster mandreel x2 50.76422+-0.20888 ? 54.36650+-7.73432 ? might be 1.0710x slower gbemu x2 43.24485+-2.31290 ? 44.98321+-2.78101 ? might be 1.0402x slower closure 0.65113+-0.00503 ? 0.65166+-0.00378 ? jquery 8.49246+-0.03971 ? 8.54967+-0.08024 ? box2d x2 11.82865+-0.06466 ? 12.49122+-1.30953 ? might be 1.0560x slower zlib x2 410.65862+-4.00610 404.23362+-21.33200 might be 1.0159x faster typescript x2 870.50635+-75.83536 828.46106+-9.43928 might be 1.0508x faster <geometric> 6.61909+-0.08027 ? 6.67138+-0.17849 ? might be 1.0079x slower TipOfTree LessStructureWatch Kraken: ai-astar 224.887+-5.263 ? 231.021+-12.725 ? might be 1.0273x slower audio-beat-detection 83.315+-1.660 ! 94.806+-0.369 ! definitely 1.1379x slower audio-dft 125.911+-9.937 ^ 110.391+-1.606 ^ definitely 1.1406x faster audio-fft 70.014+-1.022 ^ 64.781+-3.270 ^ definitely 1.0808x faster audio-oscillator 76.182+-0.454 75.460+-0.305 imaging-darkroom 106.391+-2.891 ? 108.323+-1.695 ? might be 1.0182x slower imaging-desaturate 61.706+-2.050 61.529+-1.607 imaging-gaussian-blur 109.728+-2.685 ? 114.715+-5.894 ? might be 1.0455x slower json-parse-financial 47.380+-1.276 ? 48.601+-1.827 ? might be 1.0258x slower json-stringify-tinderbox 28.749+-0.306 ? 29.402+-1.456 ? might be 1.0227x slower stanford-crypto-aes 58.611+-1.759 ^ 48.480+-0.598 ^ definitely 1.2090x faster stanford-crypto-ccm 48.202+-1.612 ? 51.372+-3.241 ? might be 1.0658x slower stanford-crypto-pbkdf2 106.632+-2.501 106.066+-2.901 stanford-crypto-sha256-iterative 40.791+-0.363 ? 41.487+-1.906 ? might be 1.0171x slower <arithmetic> 84.893+-0.987 84.745+-0.869 might be 1.0017x faster TipOfTree LessStructureWatch JSRegress: abc-forward-loop-equal 48.3405+-0.9245 ? 50.0940+-1.7087 ? might be 1.0363x slower abc-postfix-backward-loop 47.4878+-1.6631 ? 47.8584+-1.3720 ? abc-simple-backward-loop 48.1587+-2.0777 46.9499+-0.8292 might be 1.0257x faster abc-simple-forward-loop 46.7741+-0.7845 ? 48.7075+-1.2361 ? might be 1.0413x slower abc-skippy-loop 32.4596+-0.9315 ? 32.9892+-1.3566 ? might be 1.0163x slower abs-boolean 2.7691+-0.1298 2.7213+-0.0315 might be 1.0176x faster adapt-to-double-divide 16.8504+-0.5739 16.7599+-0.3276 aliased-arguments-getbyval 1.3698+-0.1387 1.3509+-0.0672 might be 1.0140x faster allocate-big-object 2.9073+-0.1038 ? 2.9327+-0.2422 ? arguments-named-and-reflective 12.8797+-1.2521 12.7474+-1.0642 might be 1.0104x faster arguments-out-of-bounds 14.8479+-0.7553 14.8121+-0.7198 arguments-strict-mode 11.1230+-0.5187 ? 11.3999+-0.6905 ? might be 1.0249x slower arguments 9.8373+-0.7584 ? 10.5935+-1.2710 ? might be 1.0769x slower arity-mismatch-inlining 0.8660+-0.0103 ? 0.9559+-0.1521 ? might be 1.1037x slower array-access-polymorphic-structure 7.3016+-1.1427 6.6178+-0.0914 might be 1.1033x faster array-nonarray-polymorhpic-access 32.2613+-1.5771 ? 32.2992+-1.3625 ? array-prototype-every 86.3294+-4.1039 ? 87.3959+-2.5206 ? might be 1.0124x slower array-prototype-forEach 86.4007+-2.1480 ? 86.8593+-3.3469 ? array-prototype-map 90.6401+-1.8938 ? 93.1960+-2.4045 ? might be 1.0282x slower array-prototype-reduce 81.3490+-2.7375 ? 82.0975+-3.9773 ? array-prototype-reduceRight 80.6288+-1.5897 ? 81.4907+-1.3159 ? might be 1.0107x slower array-prototype-some 85.8645+-0.7847 ? 89.4358+-5.1633 ? might be 1.0416x slower array-splice-contiguous 27.6963+-1.7120 ? 28.9174+-1.8956 ? might be 1.0441x slower array-with-double-add 4.1775+-0.1663 ? 4.3733+-0.0764 ? might be 1.0469x slower array-with-double-increment 3.3788+-0.1266 3.2551+-0.0583 might be 1.0380x faster array-with-double-mul-add 5.0972+-0.1486 ? 5.3552+-0.3133 ? might be 1.0506x slower array-with-double-sum 3.3119+-0.0361 ? 3.3553+-0.2029 ? might be 1.0131x slower array-with-int32-add-sub 6.8461+-0.1081 ! 7.6870+-0.6275 ! definitely 1.1228x slower array-with-int32-or-double-sum 3.4391+-0.1402 3.3347+-0.0576 might be 1.0313x faster ArrayBuffer-DataView-alloc-large-long-lived 33.6542+-0.9186 ? 33.9839+-2.8628 ? ArrayBuffer-DataView-alloc-long-lived 14.9133+-1.7525 14.8058+-2.0645 ArrayBuffer-Int32Array-byteOffset 3.8797+-0.1983 ? 4.0631+-0.4613 ? might be 1.0473x slower ArrayBuffer-Int8Array-alloc-large-long-lived 33.6844+-1.6781 33.2395+-1.8573 might be 1.0134x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 23.0958+-1.6262 22.1255+-1.4790 might be 1.0439x faster ArrayBuffer-Int8Array-alloc-long-lived 13.0559+-1.3382 12.9740+-1.3878 ArrayBuffer-Int8Array-alloc 10.4607+-0.2983 ? 10.6589+-0.7607 ? might be 1.0190x slower asmjs_bool_bug 18.4232+-0.1870 18.4063+-0.2601 assign-custom-setter-polymorphic 3.4801+-0.3691 3.1212+-0.0774 might be 1.1150x faster assign-custom-setter 4.5088+-0.0327 ? 4.8233+-0.9591 ? might be 1.0698x slower basic-set 9.3953+-1.1427 8.7535+-0.2959 might be 1.0733x faster big-int-mul 4.4745+-0.1404 ? 4.5550+-0.3317 ? might be 1.0180x slower boolean-test 3.1600+-0.0696 3.1558+-0.0566 branch-fold 3.7701+-0.0479 ? 3.7707+-0.0586 ? branch-on-string-as-boolean 21.4072+-1.9561 ? 21.7258+-1.4324 ? might be 1.0149x slower by-val-generic 8.3690+-0.6662 8.2297+-0.2701 might be 1.0169x faster call-spread-apply 34.1996+-0.8360 33.1855+-1.7437 might be 1.0306x faster call-spread-call 26.3342+-1.4858 ^ 24.4244+-0.1490 ^ definitely 1.0782x faster captured-assignments 0.4927+-0.0458 ? 0.4959+-0.0197 ? cast-int-to-double 5.4194+-0.2932 ? 5.8903+-1.4736 ? might be 1.0869x slower cell-argument 8.6364+-0.0652 ? 9.1039+-0.5295 ? might be 1.0541x slower cfg-simplify 2.8516+-0.1210 ? 2.8671+-0.0895 ? chain-getter-access 9.1040+-0.1641 ? 9.3640+-0.1656 ? might be 1.0286x slower cmpeq-obj-to-obj-other 12.1335+-0.5871 11.3286+-1.5747 might be 1.0710x faster constant-test 5.0347+-0.0346 ? 5.0382+-0.0314 ? create-lots-of-functions 11.4736+-0.2060 ? 12.0877+-1.2819 ? might be 1.0535x slower cse-new-array-buffer 2.4717+-0.0426 ? 2.5995+-0.2334 ? might be 1.0517x slower cse-new-array 2.6152+-0.0764 ? 2.6263+-0.0977 ? DataView-custom-properties 39.7209+-2.1489 39.4158+-2.8636 delay-tear-off-arguments-strictmode 14.0009+-0.2025 ? 14.7386+-1.6191 ? might be 1.0527x slower deltablue-varargs 210.3434+-1.3297 ? 212.4523+-3.0580 ? might be 1.0100x slower destructuring-arguments 185.9067+-4.9362 184.7534+-5.3667 destructuring-parameters-overridden-by-function 0.5616+-0.0405 ? 0.5846+-0.0430 ? might be 1.0408x slower destructuring-swap 5.3404+-0.6263 5.1846+-0.1409 might be 1.0301x faster direct-arguments-getbyval 1.3655+-0.1004 ? 1.3945+-0.0865 ? might be 1.0212x slower div-boolean-double 5.2530+-0.0224 ? 5.2558+-0.0094 ? div-boolean 7.8345+-0.0428 ? 7.8730+-0.1230 ? double-get-by-val-out-of-bounds 4.7488+-0.3306 4.5685+-0.0658 might be 1.0395x faster double-pollution-getbyval 8.9047+-0.0892 ? 8.9552+-0.1158 ? double-pollution-putbyoffset 4.3383+-0.0744 4.3148+-0.0449 double-real-use 30.3134+-1.4338 30.0185+-1.1378 double-to-int32-typed-array-no-inline 2.4014+-0.1634 2.2999+-0.1303 might be 1.0441x faster double-to-int32-typed-array 1.9653+-0.0731 ? 2.0146+-0.0876 ? might be 1.0251x slower double-to-uint32-typed-array-no-inline 2.4443+-0.0523 2.4092+-0.1140 might be 1.0146x faster double-to-uint32-typed-array 2.0063+-0.0262 ? 2.0303+-0.0407 ? might be 1.0120x slower elidable-new-object-dag 44.6658+-2.3256 43.9074+-1.4137 might be 1.0173x faster elidable-new-object-roflcopter 41.0866+-2.1818 ? 44.0594+-2.2833 ? might be 1.0724x slower elidable-new-object-then-call 40.2358+-1.5436 39.7164+-1.2734 might be 1.0131x faster elidable-new-object-tree 46.6766+-2.8579 45.8627+-2.5087 might be 1.0177x faster empty-string-plus-int 5.4469+-0.1372 ? 5.5065+-0.2215 ? might be 1.0109x slower emscripten-cube2hash 37.5732+-1.0407 ? 39.2656+-1.5837 ? might be 1.0450x slower exit-length-on-plain-object 13.9823+-0.9128 13.8151+-0.5297 might be 1.0121x faster external-arguments-getbyval 1.3850+-0.0948 1.3263+-0.0921 might be 1.0442x faster external-arguments-putbyval 2.4213+-0.0312 2.3966+-0.0675 might be 1.0103x faster fixed-typed-array-storage-var-index 1.2509+-0.0501 ? 1.2886+-0.1503 ? might be 1.0302x slower fixed-typed-array-storage 0.9204+-0.0378 ? 0.9445+-0.0256 ? might be 1.0261x slower Float32Array-matrix-mult 4.6971+-0.2428 4.6730+-0.2614 Float32Array-to-Float64Array-set 55.1767+-0.5818 ? 56.0119+-1.6740 ? might be 1.0151x slower Float64Array-alloc-long-lived 67.7380+-1.3591 ? 69.7845+-1.1958 ? might be 1.0302x slower Float64Array-to-Int16Array-set 69.5137+-1.7439 69.2252+-4.7627 fold-double-to-int 21.7250+-0.3580 ^ 14.0004+-0.2098 ^ definitely 1.5517x faster fold-get-by-id-to-multi-get-by-offset-rare-int 10.1942+-1.2216 ? 10.5524+-1.1039 ? might be 1.0351x slower fold-get-by-id-to-multi-get-by-offset 10.3482+-0.8848 ? 10.3813+-1.2093 ? fold-multi-get-by-offset-to-get-by-offset 10.0127+-0.7269 9.9585+-1.3735 fold-multi-get-by-offset-to-poly-get-by-offset 9.3042+-0.8757 ? 10.1222+-1.3023 ? might be 1.0879x slower fold-multi-put-by-offset-to-poly-put-by-offset 10.1766+-0.9495 9.9465+-1.0505 might be 1.0231x faster fold-multi-put-by-offset-to-put-by-offset 7.7222+-1.6288 ? 8.0459+-0.7643 ? might be 1.0419x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 10.1882+-0.3178 10.0451+-0.4474 might be 1.0142x faster fold-put-by-id-to-multi-put-by-offset 9.4494+-1.1258 ? 9.5878+-1.2124 ? might be 1.0146x slower fold-put-structure 7.2207+-1.1319 6.8265+-1.5513 might be 1.0577x faster for-of-iterate-array-entries 12.6816+-0.1925 ? 13.2106+-0.7904 ? might be 1.0417x slower for-of-iterate-array-keys 4.2450+-0.6982 3.9635+-0.2098 might be 1.0710x faster for-of-iterate-array-values 3.9067+-0.2512 ? 4.0115+-0.4061 ? might be 1.0268x slower fround 22.0250+-1.2537 ? 22.0979+-0.7831 ? ftl-library-inlining-dataview 72.5578+-2.0265 ^ 65.2876+-0.2983 ^ definitely 1.1114x faster ftl-library-inlining 79.7553+-21.5892 ? 99.8196+-18.2658 ? might be 1.2516x slower function-dot-apply 2.2688+-0.1065 2.2149+-0.0401 might be 1.0243x faster function-test 2.9415+-0.0807 ? 3.1879+-0.3822 ? might be 1.0838x slower function-with-eval 111.6179+-8.3537 109.8148+-4.6659 might be 1.0164x faster gcse-poly-get-less-obvious 19.8890+-2.4131 18.4138+-0.6657 might be 1.0801x faster gcse-poly-get 20.5902+-1.4093 ? 22.3546+-1.7559 ? might be 1.0857x slower gcse 4.6088+-0.2608 4.4196+-0.0991 might be 1.0428x faster get-by-id-bimorphic-check-structure-elimination-simple 2.7666+-0.0661 ? 2.8020+-0.1058 ? might be 1.0128x slower get-by-id-bimorphic-check-structure-elimination 6.1010+-0.2172 6.0885+-0.2047 get-by-id-chain-from-try-block 7.9062+-1.2726 ? 7.9588+-1.4001 ? get-by-id-check-structure-elimination 5.1049+-0.0059 ? 5.1616+-0.0880 ? might be 1.0111x slower get-by-id-proto-or-self 19.4415+-1.3761 18.7145+-1.4080 might be 1.0388x faster get-by-id-quadmorphic-check-structure-elimination-simple 3.1227+-0.3385 2.9750+-0.0130 might be 1.0497x faster get-by-id-self-or-proto 18.6690+-1.8447 18.1394+-0.8593 might be 1.0292x faster get-by-val-out-of-bounds 4.5388+-0.2621 4.4763+-0.0546 might be 1.0140x faster get_callee_monomorphic 2.6238+-0.0585 ? 2.6285+-0.1065 ? get_callee_polymorphic 4.6641+-0.3541 ? 4.6716+-0.5170 ? getter-no-activation 5.0630+-0.3238 ? 5.2603+-0.3418 ? might be 1.0390x slower getter-prototype 15.4043+-1.0025 15.1630+-0.9022 might be 1.0159x faster getter-richards 123.6832+-5.9593 ! 139.5712+-4.1627 ! definitely 1.1285x slower getter 5.5053+-0.4304 ? 5.8374+-0.5288 ? might be 1.0603x slower global-var-const-infer-fire-from-opt 1.0417+-0.1523 1.0343+-0.0822 global-var-const-infer 0.9366+-0.0993 0.8051+-0.0365 might be 1.1632x faster HashMap-put-get-iterate-keys 30.1650+-1.3800 ? 30.6547+-1.2366 ? might be 1.0162x slower HashMap-put-get-iterate 32.5795+-0.7979 31.8463+-1.0586 might be 1.0230x faster HashMap-string-put-get-iterate 27.5124+-0.3935 ? 31.1201+-4.2986 ? might be 1.1311x slower hoist-make-rope 12.6400+-0.7711 ? 13.2265+-1.4117 ? might be 1.0464x slower hoist-poly-check-structure-effectful-loop 5.1881+-0.2145 5.1306+-0.0636 might be 1.0112x faster hoist-poly-check-structure 3.7367+-0.0695 3.7098+-0.0526 imul-double-only 8.5817+-0.1430 8.4288+-0.0660 might be 1.0182x faster imul-int-only 10.1762+-0.8148 ? 10.5550+-0.1369 ? might be 1.0372x slower imul-mixed 8.5520+-0.3533 ? 8.6520+-0.3041 ? might be 1.0117x slower in-four-cases 22.6610+-0.1925 ? 22.8815+-0.2874 ? in-one-case-false 10.9951+-0.0709 ? 11.0380+-0.0661 ? in-one-case-true 11.5573+-0.9562 11.1200+-0.1343 might be 1.0393x faster in-two-cases 11.4033+-0.1359 ? 11.4886+-0.2123 ? indexed-properties-in-objects 3.3034+-0.3586 3.1808+-0.2312 might be 1.0385x faster infer-closure-const-then-mov-no-inline 3.8875+-0.0980 ? 4.0560+-0.1742 ? might be 1.0434x slower infer-closure-const-then-mov 19.9094+-0.3411 ? 19.9361+-0.5371 ? infer-closure-const-then-put-to-scope-no-inline 12.8010+-0.2880 ? 13.1810+-1.6167 ? might be 1.0297x slower infer-closure-const-then-put-to-scope 22.2561+-0.9632 21.6392+-1.2462 might be 1.0285x faster infer-closure-const-then-reenter-no-inline 54.6941+-1.1902 ? 54.9567+-1.6102 ? infer-closure-const-then-reenter 23.8452+-1.6407 22.5894+-1.9362 might be 1.0556x faster infer-constant-global-property 3.6687+-0.1236 3.5728+-0.0716 might be 1.0268x faster infer-constant-property 2.8294+-0.2032 ? 2.8389+-0.1959 ? infer-one-time-closure-ten-vars 12.6018+-0.2912 ? 13.2776+-0.9421 ? might be 1.0536x slower infer-one-time-closure-two-vars 12.6864+-1.4584 ? 13.3404+-1.3529 ? might be 1.0515x slower infer-one-time-closure 12.2503+-0.3002 ? 12.4725+-0.8917 ? might be 1.0181x slower infer-one-time-deep-closure 22.1427+-0.8174 ? 22.4632+-1.9483 ? might be 1.0145x slower inline-arguments-access 4.3821+-0.1074 ? 4.6119+-0.4631 ? might be 1.0524x slower inline-arguments-aliased-access 4.3227+-0.0527 ? 4.3555+-0.0750 ? inline-arguments-local-escape 4.4083+-0.1273 ? 4.4362+-0.2098 ? inline-get-scoped-var 4.8788+-0.2060 4.7977+-0.2027 might be 1.0169x faster inlined-put-by-id-transition 11.9447+-0.4799 11.9095+-0.6141 int-or-other-abs-then-get-by-val 5.1892+-0.3972 5.1235+-0.0507 might be 1.0128x faster int-or-other-abs-zero-then-get-by-val 18.4204+-1.4140 ? 19.3807+-2.2297 ? might be 1.0521x slower int-or-other-add-then-get-by-val 4.3844+-0.0573 ? 4.4990+-0.0637 ? might be 1.0261x slower int-or-other-add 5.3757+-0.0486 ? 5.5550+-0.4599 ? might be 1.0334x slower int-or-other-div-then-get-by-val 4.2679+-0.0157 ? 4.3127+-0.0885 ? might be 1.0105x slower int-or-other-max-then-get-by-val 4.3482+-0.0653 ! 4.5822+-0.0268 ! definitely 1.0538x slower int-or-other-min-then-get-by-val 4.3873+-0.0993 ! 4.6156+-0.0845 ! definitely 1.0520x slower int-or-other-mod-then-get-by-val 3.9337+-0.0909 ! 4.0893+-0.0601 ! definitely 1.0395x slower int-or-other-mul-then-get-by-val 3.9138+-0.0936 ? 4.0237+-0.1038 ? might be 1.0281x slower int-or-other-neg-then-get-by-val 4.7963+-0.0082 ! 4.9216+-0.0182 ! definitely 1.0261x slower int-or-other-neg-zero-then-get-by-val 18.2139+-0.9379 18.0904+-0.5225 int-or-other-sub-then-get-by-val 4.4143+-0.0908 ? 4.8241+-0.4217 ? might be 1.0928x slower int-or-other-sub 3.8247+-0.6661 3.6174+-0.0651 might be 1.0573x faster int-overflow-local 4.7767+-0.3405 4.5386+-0.0318 might be 1.0525x faster Int16Array-alloc-long-lived 50.1576+-1.8614 ? 52.2330+-1.7054 ? might be 1.0414x slower Int16Array-bubble-sort-with-byteLength 15.4970+-1.0450 14.8652+-0.1124 might be 1.0425x faster Int16Array-bubble-sort 16.1476+-0.1556 ? 16.3827+-0.5676 ? might be 1.0146x slower Int16Array-load-int-mul 1.5099+-0.0131 ? 1.5315+-0.0292 ? might be 1.0143x slower Int16Array-to-Int32Array-set 56.7033+-2.1214 55.7533+-2.0105 might be 1.0170x faster Int32Array-alloc-large 24.3910+-1.0048 ? 25.1339+-2.2298 ? might be 1.0305x slower Int32Array-alloc-long-lived 55.0893+-1.4605 ? 57.0154+-1.8365 ? might be 1.0350x slower Int32Array-alloc 3.4636+-0.2158 ? 3.6801+-0.6140 ? might be 1.0625x slower Int32Array-Int8Array-view-alloc 7.3653+-1.1424 6.9337+-0.7404 might be 1.0623x faster int52-spill 5.4679+-0.2776 5.3627+-0.0803 might be 1.0196x faster Int8Array-alloc-long-lived 45.3115+-1.7084 ? 46.6406+-1.4425 ? might be 1.0293x slower Int8Array-load-with-byteLength 3.4043+-0.1144 3.4031+-0.0663 Int8Array-load 3.4106+-0.0910 ? 3.4490+-0.1814 ? might be 1.0113x slower integer-divide 10.9975+-0.1070 ? 11.0905+-0.1447 ? integer-modulo 2.1273+-0.0632 2.0559+-0.0292 might be 1.0347x faster is-boolean-fold-tricky 4.4999+-0.0662 ? 4.5500+-0.1009 ? might be 1.0111x slower is-boolean-fold 2.8871+-0.0402 ? 2.9174+-0.0614 ? might be 1.0105x slower is-function-fold-tricky-internal-function 12.4300+-0.9524 ? 12.6215+-1.0903 ? might be 1.0154x slower is-function-fold-tricky 4.6135+-0.1284 ? 4.7167+-0.1681 ? might be 1.0224x slower is-function-fold 2.9994+-0.1079 ? 3.0037+-0.1665 ? is-number-fold-tricky 4.4633+-0.0465 ? 4.4836+-0.0654 ? is-number-fold 2.9085+-0.0361 ? 2.9603+-0.1128 ? might be 1.0178x slower is-object-or-null-fold-functions 2.9880+-0.0882 ? 3.0162+-0.1683 ? is-object-or-null-fold-less-tricky 4.6233+-0.1548 4.6093+-0.1244 is-object-or-null-fold-tricky 6.6365+-0.0144 ? 6.6519+-0.0303 ? is-object-or-null-fold 3.0125+-0.2175 2.9523+-0.0653 might be 1.0204x faster is-object-or-null-trickier-function 4.6466+-0.0446 ? 4.7401+-0.1598 ? might be 1.0201x slower is-object-or-null-trickier-internal-function 12.6354+-0.1936 12.4617+-0.0901 might be 1.0139x faster is-object-or-null-tricky-function 4.7555+-0.2383 4.7487+-0.2805 is-object-or-null-tricky-internal-function 9.4792+-0.2479 9.3185+-0.0787 might be 1.0172x faster is-string-fold-tricky 4.6121+-0.1573 4.5189+-0.0819 might be 1.0206x faster is-string-fold 2.8739+-0.0255 ? 2.8942+-0.0318 ? is-undefined-fold-tricky 3.8897+-0.1908 3.7559+-0.0401 might be 1.0356x faster is-undefined-fold 3.0341+-0.2890 2.9309+-0.1269 might be 1.0352x faster large-int-captured 4.6799+-0.0343 4.6767+-0.1038 large-int-neg 17.0731+-1.7044 16.5523+-0.7575 might be 1.0315x faster large-int 15.7759+-1.2744 ? 16.1302+-2.9965 ? might be 1.0225x slower load-varargs-elimination 23.2935+-0.7354 ? 24.0074+-1.2142 ? might be 1.0307x slower logical-not-weird-types 3.3803+-0.0488 3.3507+-0.0545 logical-not 4.9637+-0.3913 4.6570+-0.0326 might be 1.0659x faster lots-of-fields 13.0452+-1.5092 12.6518+-0.9796 might be 1.0311x faster make-indexed-storage 3.0696+-0.2846 ? 3.2266+-0.0714 ? might be 1.0512x slower make-rope-cse 5.2536+-0.7473 4.7863+-0.4537 might be 1.0976x faster marsaglia-larger-ints 37.3686+-0.8561 36.7177+-0.8559 might be 1.0177x faster marsaglia-osr-entry 23.9230+-1.0254 23.1003+-0.6527 might be 1.0356x faster math-with-out-of-bounds-array-values 24.1257+-0.7051 ? 25.0756+-1.7214 ? might be 1.0394x slower max-boolean 2.6456+-0.3066 2.5506+-0.0329 might be 1.0373x faster method-on-number 17.0938+-0.2571 ? 17.1762+-0.4854 ? min-boolean 2.5300+-0.0211 ? 2.6252+-0.0839 ? might be 1.0376x slower minus-boolean-double 3.2243+-0.0821 3.1813+-0.0220 might be 1.0135x faster minus-boolean 2.3972+-0.1061 ? 2.4472+-0.1425 ? might be 1.0208x slower misc-strict-eq 38.9596+-3.4730 38.4998+-1.8153 might be 1.0119x faster mod-boolean-double 11.2698+-0.8989 10.9022+-0.0687 might be 1.0337x faster mod-boolean 7.8662+-0.0162 ? 7.9135+-0.0910 ? mul-boolean-double 3.7852+-0.1000 3.7749+-0.0981 mul-boolean 2.9653+-0.0306 ? 3.1378+-0.2990 ? might be 1.0582x slower neg-boolean 3.2292+-0.0381 ? 3.2455+-0.1185 ? negative-zero-divide 0.3931+-0.0363 0.3893+-0.0094 negative-zero-modulo 0.3884+-0.0565 ? 0.4022+-0.0247 ? might be 1.0355x slower negative-zero-negate 0.3598+-0.0173 ? 0.3670+-0.0197 ? might be 1.0199x slower nested-function-parsing 46.9522+-1.4050 ? 47.6545+-3.3242 ? might be 1.0150x slower new-array-buffer-dead 112.9753+-2.8578 112.5961+-1.5643 new-array-buffer-push 7.1798+-0.8359 7.1330+-0.6552 new-array-dead 19.6617+-1.4564 19.6220+-0.7215 new-array-push 3.9685+-0.1662 ? 4.1674+-0.4725 ? might be 1.0501x slower no-inline-constructor 39.9917+-1.6603 ? 41.8111+-1.5268 ? might be 1.0455x slower number-test 3.0924+-0.0305 ? 3.1864+-0.1515 ? might be 1.0304x slower object-closure-call 5.7633+-0.1490 ? 5.9495+-0.4601 ? might be 1.0323x slower object-test 2.9129+-0.0545 ? 2.9189+-0.0746 ? obvious-sink-pathology-taken 140.5435+-1.8323 ? 140.8996+-2.9978 ? obvious-sink-pathology 132.3804+-1.4559 ? 132.8220+-1.9026 ? obviously-elidable-new-object 35.1048+-1.6209 ? 35.2808+-1.4862 ? plus-boolean-arith 2.6433+-0.1278 2.5697+-0.0804 might be 1.0286x faster plus-boolean-double 3.2773+-0.1319 3.2723+-0.1128 plus-boolean 2.4303+-0.0322 ? 2.4583+-0.0983 ? might be 1.0115x slower poly-chain-access-different-prototypes-simple 3.3781+-0.1442 ? 3.5102+-0.0643 ? might be 1.0391x slower poly-chain-access-different-prototypes 2.6487+-0.0209 ! 2.8100+-0.0127 ! definitely 1.0609x slower poly-chain-access-simpler 3.3322+-0.0620 3.2758+-0.0442 might be 1.0172x faster poly-chain-access 2.6578+-0.1009 ? 2.6924+-0.0385 ? might be 1.0130x slower poly-stricteq 64.9640+-3.4025 63.8271+-3.3429 might be 1.0178x faster polymorphic-array-call 1.4567+-0.1102 1.4115+-0.1392 might be 1.0321x faster polymorphic-get-by-id 3.2250+-0.1927 3.2184+-0.2353 polymorphic-put-by-id 32.4667+-3.0209 31.7050+-3.4762 might be 1.0240x faster polymorphic-structure 15.1971+-0.7389 ? 15.5217+-1.2884 ? might be 1.0214x slower polyvariant-monomorphic-get-by-id 8.9262+-0.6762 8.5732+-0.1635 might be 1.0412x faster proto-getter-access 9.2377+-0.2042 ? 9.3940+-0.5664 ? might be 1.0169x slower put-by-id-replace-and-transition 9.4395+-0.2014 ? 9.6689+-0.3086 ? might be 1.0243x slower put-by-id-slightly-polymorphic 2.9012+-0.1288 2.8654+-0.0270 might be 1.0125x faster put-by-id 12.5905+-0.3854 12.5284+-0.2200 put-by-val-direct 0.3824+-0.0079 ? 0.4017+-0.0426 ? might be 1.0503x slower put-by-val-large-index-blank-indexing-type 5.8570+-0.1009 ? 6.4388+-1.0312 ? might be 1.0993x slower put-by-val-machine-int 2.7626+-0.0741 ? 2.8300+-0.1438 ? might be 1.0244x slower rare-osr-exit-on-local 15.5280+-0.8577 15.4103+-0.6056 register-pressure-from-osr 21.4495+-0.2445 ? 21.7596+-0.4589 ? might be 1.0145x slower repeat-multi-get-by-offset 24.6664+-0.6563 ? 25.0372+-1.7643 ? might be 1.0150x slower setter-prototype 10.3833+-0.1410 ! 10.7570+-0.1390 ! definitely 1.0360x slower setter 6.4519+-0.7876 6.2095+-0.7401 might be 1.0390x faster simple-activation-demo 28.0876+-5.7720 ? 30.0220+-0.4393 ? might be 1.0689x slower simple-getter-access 11.8186+-0.1738 ? 11.8603+-0.2008 ? simple-poly-call-nested 8.0846+-0.1952 ? 8.2104+-0.4552 ? might be 1.0156x slower simple-poly-call 1.3093+-0.0503 ? 1.3368+-0.0528 ? might be 1.0210x slower sin-boolean 23.1127+-0.7796 ? 23.4304+-0.6941 ? might be 1.0137x slower singleton-scope 67.2503+-3.4719 62.8533+-1.6357 might be 1.0700x faster sink-function 12.1202+-0.9729 11.5935+-0.2850 might be 1.0454x faster sink-huge-activation 19.0632+-1.1807 ? 19.9572+-1.3837 ? might be 1.0469x slower sinkable-new-object-dag 70.9187+-2.9037 70.9089+-2.5389 sinkable-new-object-taken 50.4895+-2.3767 ? 53.1172+-3.5277 ? might be 1.0520x slower sinkable-new-object 39.1584+-1.1630 38.5725+-2.2639 might be 1.0152x faster slow-array-profile-convergence 3.0636+-0.3641 2.9423+-0.1772 might be 1.0412x faster slow-convergence 2.7358+-0.0963 ? 2.7961+-0.1537 ? might be 1.0220x slower slow-ternaries 21.0726+-2.5922 19.1271+-0.2138 might be 1.1017x faster sorting-benchmark 18.7625+-0.3978 ? 19.2502+-0.7867 ? might be 1.0260x slower sparse-conditional 1.2416+-0.0578 ? 1.2738+-0.1991 ? might be 1.0260x slower splice-to-remove 16.1678+-1.4137 ? 16.2233+-1.6536 ? string-char-code-at 15.9320+-0.2150 ! 18.3215+-0.9348 ! definitely 1.1500x slower string-concat-object 2.5597+-0.2120 ? 2.6215+-0.1253 ? might be 1.0241x slower string-concat-pair-object 2.4418+-0.0926 ? 2.6075+-0.1874 ? might be 1.0679x slower string-concat-pair-simple 12.0586+-0.9672 ? 12.6786+-1.1060 ? might be 1.0514x slower string-concat-simple 12.2458+-0.7470 ? 12.5280+-1.1894 ? might be 1.0230x slower string-cons-repeat 8.1286+-0.7772 ? 8.5222+-0.9763 ? might be 1.0484x slower string-cons-tower 8.3689+-0.9411 8.0775+-0.5381 might be 1.0361x faster string-equality 19.5255+-1.3091 ! 22.4263+-1.2145 ! definitely 1.1486x slower string-get-by-val-big-char 7.1906+-0.0562 ? 7.2238+-0.0675 ? string-get-by-val-out-of-bounds-insane 3.7390+-0.0563 ? 4.0947+-0.6026 ? might be 1.0951x slower string-get-by-val-out-of-bounds 5.3212+-0.1717 5.3186+-0.1061 string-get-by-val 3.5747+-0.1545 3.4598+-0.0372 might be 1.0332x faster string-hash 2.2757+-0.1936 2.2122+-0.0452 might be 1.0287x faster string-long-ident-equality 17.1272+-0.1651 ^ 14.8700+-0.1009 ^ definitely 1.1518x faster string-out-of-bounds 14.9543+-0.2853 14.8764+-0.3766 string-repeat-arith 36.6907+-3.3980 33.0738+-1.9988 might be 1.1094x faster string-sub 71.5992+-3.4570 67.0611+-6.1493 might be 1.0677x faster string-test 2.9843+-0.0267 ? 3.0304+-0.1127 ? might be 1.0154x slower string-var-equality 35.4065+-1.2574 35.2086+-1.6646 structure-hoist-over-transitions 2.6947+-0.0298 ? 2.7899+-0.1179 ? might be 1.0353x slower substring-concat-weird 42.3701+-1.4398 ? 42.7102+-1.8789 ? substring-concat 45.8681+-2.7936 45.3753+-1.9612 might be 1.0109x faster substring 50.1287+-0.8952 49.2222+-1.6751 might be 1.0184x faster switch-char-constant 2.7830+-0.0332 2.7803+-0.0384 switch-char 7.0155+-0.8930 ? 7.1380+-1.8247 ? might be 1.0175x slower switch-constant 8.3713+-0.4883 8.1588+-0.2428 might be 1.0260x faster switch-string-basic-big-var 18.5824+-0.6848 ? 18.8724+-0.8379 ? might be 1.0156x slower switch-string-basic-big 14.9683+-0.2187 ? 14.9751+-0.1675 ? switch-string-basic-var 17.0731+-3.6567 15.5461+-0.5215 might be 1.0982x faster switch-string-basic 14.2386+-0.6586 ? 14.2861+-0.7376 ? switch-string-big-length-tower-var 21.1213+-1.2706 21.0815+-1.0561 switch-string-length-tower-var 15.5339+-0.2845 15.4727+-0.1779 switch-string-length-tower 13.1515+-0.1575 ? 13.5460+-1.1197 ? might be 1.0300x slower switch-string-short 13.2684+-0.7183 ? 13.3495+-0.2605 ? switch 11.9993+-0.2056 ? 12.0730+-0.2002 ? tear-off-arguments-simple 3.4247+-0.0412 ? 3.4298+-0.0532 ? tear-off-arguments 4.7138+-0.1395 ? 4.8346+-0.3148 ? might be 1.0256x slower temporal-structure 13.2530+-1.3000 ? 13.4786+-0.7828 ? might be 1.0170x slower to-int32-boolean 13.8994+-0.1961 ? 14.5888+-1.2472 ? might be 1.0496x slower try-catch-get-by-val-cloned-arguments 16.4914+-2.0129 16.0187+-1.8425 might be 1.0295x faster try-catch-get-by-val-direct-arguments 8.4675+-1.1870 ? 8.6473+-1.2411 ? might be 1.0212x slower try-catch-get-by-val-scoped-arguments 9.2049+-1.3204 8.1907+-0.4049 might be 1.1238x faster typed-array-get-set-by-val-profiling 28.1844+-0.5934 ? 28.9991+-1.2057 ? might be 1.0289x slower undefined-property-access 354.5211+-19.9354 352.6212+-1.0323 undefined-test 3.1218+-0.0545 ? 3.1640+-0.1271 ? might be 1.0135x slower unprofiled-licm 23.1300+-0.6819 ? 23.5238+-1.3819 ? might be 1.0170x slower varargs-call 15.0773+-0.3464 14.7732+-0.7161 might be 1.0206x faster varargs-construct-inline 28.6868+-1.3515 28.2830+-0.3583 might be 1.0143x faster varargs-construct 23.0296+-0.8713 22.5411+-0.5434 might be 1.0217x faster varargs-inline 9.4223+-0.0984 9.3025+-0.1248 might be 1.0129x faster varargs-strict-mode 10.0506+-0.1103 ? 11.3258+-1.1716 ? might be 1.1269x slower varargs 10.1463+-0.3761 ? 10.4347+-0.3233 ? might be 1.0284x slower weird-inlining-const-prop 2.5173+-0.2807 2.5020+-0.0717 <geometric> 9.1171+-0.0199 ! 9.1552+-0.0172 ! definitely 1.0042x slower TipOfTree LessStructureWatch AsmBench: bigfib.cpp 503.6298+-5.6343 ? 504.2080+-3.1340 ? cray.c 430.4480+-1.9480 ? 472.1991+-87.4661 ? might be 1.0970x slower dry.c 484.1921+-6.5212 ? 486.8872+-24.2799 ? FloatMM.c 734.4881+-32.0133 726.2287+-4.7405 might be 1.0114x faster gcc-loops.cpp 4076.8969+-10.9175 ? 4088.4528+-15.9339 ? n-body.c 991.4264+-35.1756 985.3775+-3.5226 Quicksort.c 423.3005+-2.1988 ? 424.7591+-4.5747 ? stepanov_container.cpp 3603.8615+-14.5222 ! 3641.6653+-9.5770 ! definitely 1.0105x slower Towers.c 262.3090+-12.1583 ? 269.2625+-8.6790 ? might be 1.0265x slower <geometric> 793.3432+-9.1167 ? 803.5950+-17.7223 ? might be 1.0129x slower TipOfTree LessStructureWatch CompressionBench: huffman 58.0979+-2.4470 57.6393+-3.1458 arithmetic-simple 338.2108+-4.0452 ? 338.8903+-2.3691 ? arithmetic-precise 278.5265+-3.0120 ? 281.5090+-8.9300 ? might be 1.0107x slower arithmetic-complex-precise 275.8210+-3.2094 274.9501+-2.1246 arithmetic-precise-order-0 344.1038+-2.7765 ? 347.6334+-4.6079 ? might be 1.0103x slower arithmetic-precise-order-1 336.6047+-6.4068 335.3737+-16.2832 arithmetic-precise-order-2 365.7611+-4.6379 ? 368.5050+-5.2441 ? arithmetic-simple-order-1 399.5012+-1.5025 ? 399.8178+-4.7706 ? arithmetic-simple-order-2 442.9215+-4.7786 ? 448.7936+-3.2136 ? might be 1.0133x slower lz-string 314.1816+-4.5319 ? 315.3893+-7.9443 ? <geometric> 285.1320+-2.0936 ? 286.0359+-1.6772 ? might be 1.0032x slower TipOfTree LessStructureWatch Geomean of preferred means: <scaled-result> 60.0311+-0.2154 ? 60.4370+-0.4389 ? might be 1.0068x slower
Filip Pizlo
Comment 3 2015-07-17 14:29:02 PDT
I removed the propertyless object restriction. This makes this a speed-up. Benchmark report for SunSpider, Octane, Kraken, and AsmBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953) "LessStructureWatch" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r186953) Collected 20 samples per benchmark/VM, with 20 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 LessStructureWatch SunSpider: 3d-cube 5.1957+-0.0829 5.1778+-0.0757 3d-morph 6.0407+-0.2317 ? 6.0629+-0.2217 ? 3d-raytrace 6.5680+-0.1624 6.4695+-0.0475 might be 1.0152x faster access-binary-trees 2.4007+-0.0952 2.3955+-0.0703 access-fannkuch 6.3869+-0.2364 ^ 6.0495+-0.0702 ^ definitely 1.0558x faster access-nbody 3.1385+-0.1642 3.0564+-0.1273 might be 1.0268x faster access-nsieve 3.3853+-0.1232 ? 3.4073+-0.1182 ? bitops-3bit-bits-in-byte 1.7606+-0.0964 1.6811+-0.0731 might be 1.0473x faster bitops-bits-in-byte 3.8760+-0.1386 3.7545+-0.0950 might be 1.0323x faster bitops-bitwise-and 2.2837+-0.1033 ? 2.4570+-0.1225 ? might be 1.0759x slower bitops-nsieve-bits 3.2774+-0.0984 ? 3.2997+-0.0993 ? controlflow-recursive 2.3644+-0.1017 2.3567+-0.0754 crypto-aes 4.7257+-0.1941 4.6290+-0.0868 might be 1.0209x faster crypto-md5 3.1641+-0.0931 ^ 2.8708+-0.0550 ^ definitely 1.1021x faster crypto-sha1 2.8622+-0.0861 2.8127+-0.1033 might be 1.0176x faster date-format-tofte 9.3500+-0.1024 ? 9.4179+-0.2162 ? date-format-xparb 5.8781+-0.2600 ? 5.9150+-0.1936 ? math-cordic 3.2219+-0.1128 3.1266+-0.0670 might be 1.0305x faster math-partial-sums 5.7603+-0.2957 ? 5.8969+-0.3617 ? might be 1.0237x slower math-spectral-norm 2.0727+-0.0646 2.0707+-0.0343 regexp-dna 7.9452+-0.5589 7.6807+-0.4442 might be 1.0344x faster string-base64 5.1536+-0.2554 ? 5.1944+-0.3421 ? string-fasta 6.6033+-0.1466 ? 6.7071+-0.1119 ? might be 1.0157x slower string-tagcloud 10.0388+-0.4808 ? 10.0757+-0.4228 ? string-unpack-code 21.5384+-0.4560 21.3765+-0.5848 string-validate-input 5.2088+-0.1267 ? 5.2134+-0.0512 ? <arithmetic> 5.3923+-0.0412 5.3521+-0.0364 might be 1.0075x faster TipOfTree LessStructureWatch Octane: encrypt 0.19597+-0.00139 ^ 0.19276+-0.00107 ^ definitely 1.0167x faster decrypt 3.29700+-0.02358 ? 3.30697+-0.02632 ? deltablue x2 0.18872+-0.00113 ? 0.18919+-0.00101 ? earley 0.35380+-0.00142 ? 0.35402+-0.00129 ? boyer 5.11007+-0.01974 5.09973+-0.01635 navier-stokes x2 5.16552+-0.05474 5.14959+-0.05017 raytrace x2 1.30043+-0.01690 ? 1.30685+-0.05375 ? richards x2 0.12809+-0.00063 0.12786+-0.00078 splay x2 0.38837+-0.00162 ? 0.38851+-0.00102 ? regexp x2 28.81811+-0.10458 28.80870+-0.09576 pdfjs x2 42.90301+-0.15137 ! 43.28857+-0.21063 ! definitely 1.0090x slower mandreel x2 50.55480+-0.12857 ? 50.64727+-0.11491 ? gbemu x2 43.40649+-1.10976 ? 45.01546+-0.97829 ? might be 1.0371x slower closure 0.65210+-0.00141 ^ 0.64751+-0.00235 ^ definitely 1.0071x faster jquery 8.50974+-0.01772 8.49329+-0.02028 box2d x2 11.86960+-0.03024 ! 11.99490+-0.03460 ! definitely 1.0106x slower zlib x2 410.28797+-1.49609 402.61365+-7.78944 might be 1.0191x faster typescript x2 821.66068+-3.75257 ! 831.00446+-4.71067 ! definitely 1.0114x slower <geometric> 6.54672+-0.01600 ? 6.56318+-0.02326 ? might be 1.0025x slower TipOfTree LessStructureWatch Kraken: ai-astar 225.993+-2.739 225.260+-1.839 audio-beat-detection 82.707+-0.646 ! 92.692+-0.637 ! definitely 1.1207x slower audio-dft 120.947+-1.577 ^ 108.904+-1.133 ^ definitely 1.1106x faster audio-fft 69.944+-1.530 ^ 63.369+-0.976 ^ definitely 1.1038x faster audio-oscillator 77.310+-0.909 76.810+-0.762 imaging-darkroom 106.429+-0.762 ! 108.570+-1.143 ! definitely 1.0201x slower imaging-desaturate 62.376+-0.954 61.833+-0.789 imaging-gaussian-blur 109.475+-0.982 ? 110.611+-0.797 ? might be 1.0104x slower json-parse-financial 48.172+-0.752 47.546+-0.869 might be 1.0132x faster json-stringify-tinderbox 29.637+-0.769 29.508+-0.687 stanford-crypto-aes 58.220+-0.398 ^ 47.649+-0.449 ^ definitely 1.2219x faster stanford-crypto-ccm 48.691+-0.479 ! 50.385+-0.595 ! definitely 1.0348x slower stanford-crypto-pbkdf2 106.467+-0.811 ? 106.703+-1.022 ? stanford-crypto-sha256-iterative 42.244+-0.833 41.709+-0.406 might be 1.0128x faster <arithmetic> 84.901+-0.279 ^ 83.682+-0.263 ^ definitely 1.0146x faster TipOfTree LessStructureWatch AsmBench: bigfib.cpp 500.7538+-1.1005 500.4637+-1.3677 cray.c 430.7704+-1.0927 ? 431.0023+-1.3998 ? dry.c 486.3751+-2.8061 486.2966+-2.5636 FloatMM.c 722.9566+-3.1133 721.6365+-0.8576 gcc-loops.cpp 4085.1423+-7.3460 4080.8391+-5.7365 n-body.c 975.7405+-1.4292 975.7127+-2.6451 Quicksort.c 421.0503+-2.1266 ? 423.6416+-2.0855 ? stepanov_container.cpp 3601.2143+-6.6035 ? 3603.6897+-6.0555 ? Towers.c 255.8531+-0.5480 ? 256.4533+-1.6170 ? <geometric> 788.0894+-0.6839 ? 788.6182+-1.1628 ? might be 1.0007x slower TipOfTree LessStructureWatch Geomean of preferred means: <scaled-result> 39.2020+-0.0755 ^ 39.0186+-0.0761 ^ definitely 1.0047x faster
Filip Pizlo
Comment 4 2015-07-17 14:31:22 PDT
Created attachment 256989 [details] the patch
Mark Lam
Comment 5 2015-07-17 14:40:05 PDT
Comment on attachment 256989 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=256989&action=review r=me > Source/JavaScriptCore/ChangeLog:19 > + This is a 1.5% speed-up on Kraken. It does penalize some Octane tests, but i also seems to typo: "i also" ==> "it also".
Filip Pizlo
Comment 6 2015-07-17 22:52:41 PDT
Note You need to log in before you can comment on or make changes to this bug.