WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
140660
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging
https://bugs.webkit.org/show_bug.cgi?id=140660
Summary
Polymorphic call inlining should be based on polymorphic call inline caching ...
Filip Pizlo
Reported
2015-01-19 20:06:15 PST
...
Attachments
it begins
(29.72 KB, patch)
2015-01-20 11:41 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
more
(46.19 KB, patch)
2015-01-20 12:33 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
almost done
(103.84 KB, patch)
2015-01-20 13:01 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
it builds!
(122.67 KB, patch)
2015-01-20 16:02 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
it passes most tests
(130.74 KB, patch)
2015-01-21 15:19 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
rebased
(129.76 KB, patch)
2015-01-27 15:02 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
more refinements
(130.64 KB, patch)
2015-01-27 19:01 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
getting there
(136.16 KB, patch)
2015-01-28 11:45 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(144.24 KB, patch)
2015-01-28 20:32 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(144.26 KB, patch)
2015-01-28 20:35 PST
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(144.27 KB, patch)
2015-01-28 20:39 PST
,
Filip Pizlo
ggaren
: review+
Details
Formatted Diff
Diff
Show Obsolete
(10)
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2015-01-20 11:41:01 PST
Created
attachment 245005
[details]
it begins
Filip Pizlo
Comment 2
2015-01-20 12:33:42 PST
Created
attachment 245010
[details]
more
Filip Pizlo
Comment 3
2015-01-20 13:01:17 PST
Created
attachment 245012
[details]
almost done
Filip Pizlo
Comment 4
2015-01-20 16:02:04 PST
Created
attachment 245031
[details]
it builds!
Filip Pizlo
Comment 5
2015-01-21 15:19:52 PST
Created
attachment 245094
[details]
it passes most tests
Filip Pizlo
Comment 6
2015-01-26 17:59:27 PST
I made this pass all tests, but in its current form it is not a speed-up. I need to investigate what is going on. Part of the problem is that right now I'm testing on a relatively noisy machine; I'll need to switch to a quieter machine for the rest of my experiments. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (
r179136
) "FixPolyCall" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (
r179136
) 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 FixPolyCall SunSpider: 3d-cube 4.8558+-0.0721 ? 4.9723+-0.4128 ? might be 1.0240x slower 3d-morph 6.0593+-0.0953 6.0163+-0.0730 3d-raytrace 6.3211+-0.0614 ? 6.5042+-0.4535 ? might be 1.0290x slower access-binary-trees 2.0788+-0.0598 ^ 1.9854+-0.0326 ^ definitely 1.0471x faster access-fannkuch 5.9025+-0.3382 5.8666+-0.3605 access-nbody 2.8342+-0.0864 ? 2.8611+-0.1857 ? access-nsieve 3.5344+-0.0818 3.5312+-0.0662 bitops-3bit-bits-in-byte 1.5518+-0.0302 ? 1.5601+-0.0492 ? bitops-bits-in-byte 3.6075+-0.2641 3.6074+-0.1971 bitops-bitwise-and 2.0337+-0.0810 ? 2.7629+-1.9379 ? might be 1.3586x slower bitops-nsieve-bits 3.6860+-0.1130 3.6228+-0.0621 might be 1.0174x faster controlflow-recursive 2.1583+-0.1528 2.0998+-0.1337 might be 1.0279x faster crypto-aes 4.0738+-0.0963 ? 4.1367+-0.1704 ? might be 1.0154x slower crypto-md5 2.3341+-0.0371 2.2906+-0.0264 might be 1.0190x faster crypto-sha1 2.7106+-0.1998 2.6374+-0.2598 might be 1.0278x faster date-format-tofte 9.6587+-0.5001 9.5047+-0.6546 might be 1.0162x faster date-format-xparb 5.2814+-0.2546 ? 5.3512+-0.2784 ? might be 1.0132x slower math-cordic 3.0581+-0.0361 3.0430+-0.0566 math-partial-sums 5.0774+-0.0708 4.9861+-0.0696 might be 1.0183x faster math-spectral-norm 1.9101+-0.0442 ? 1.9120+-0.0901 ? regexp-dna 7.7842+-1.2425 ? 8.1080+-1.3190 ? might be 1.0416x slower string-base64 4.3015+-0.1596 4.2791+-0.1802 string-fasta 6.7238+-0.4960 ? 7.0305+-0.8661 ? might be 1.0456x slower string-tagcloud 9.6505+-0.1322 ? 10.1047+-0.5070 ? might be 1.0471x slower string-unpack-code 20.4137+-0.1169 20.3167+-1.4290 string-validate-input 4.5991+-0.0677 4.5395+-0.0827 might be 1.0131x faster <arithmetic> * 5.0846+-0.0637 ? 5.1396+-0.1146 ? might be 1.0108x slower <geometric> 4.2010+-0.0374 ? 4.2315+-0.0910 ? might be 1.0073x slower <harmonic> 3.5930+-0.0236 ? 3.6010+-0.0863 ? might be 1.0022x slower TipOfTree FixPolyCall LongSpider: 3d-cube 854.7516+-10.6600 ? 875.7804+-34.7338 ? might be 1.0246x slower 3d-morph 1569.9261+-56.7171 ? 1593.7264+-82.2804 ? might be 1.0152x slower 3d-raytrace 781.3981+-32.3612 741.8986+-8.2863 might be 1.0532x faster access-binary-trees 1005.5844+-17.7382 ? 1006.5353+-12.1762 ? access-fannkuch 331.7889+-11.1695 ? 337.5868+-13.8001 ? might be 1.0175x slower access-nbody 615.7902+-3.8148 ? 625.5809+-29.9598 ? might be 1.0159x slower access-nsieve 934.9967+-8.8635 ? 944.0406+-28.6616 ? bitops-3bit-bits-in-byte 46.8556+-0.8666 ? 49.0632+-1.5896 ? might be 1.0471x slower bitops-bits-in-byte 109.4880+-9.7351 ? 111.2798+-10.1379 ? might be 1.0164x slower bitops-nsieve-bits 721.0316+-32.4553 694.7774+-4.1978 might be 1.0378x faster controlflow-recursive 495.0665+-19.3433 488.2212+-5.6572 might be 1.0140x faster crypto-aes 704.0070+-11.7194 ? 707.4647+-7.9522 ? crypto-md5 626.0496+-22.7878 619.1036+-11.5709 might be 1.0112x faster crypto-sha1 683.0887+-27.7961 674.4854+-25.7800 might be 1.0128x faster date-format-tofte 806.1702+-9.5200 ? 851.0765+-51.9804 ? might be 1.0557x slower date-format-xparb 767.0769+-24.4380 ? 773.2832+-12.9653 ? math-cordic 630.7135+-30.3916 602.8797+-24.3067 might be 1.0462x faster math-partial-sums 556.0626+-26.0133 ? 556.4766+-22.8071 ? math-spectral-norm 581.1031+-27.3986 574.4264+-10.5647 might be 1.0116x faster string-base64 369.6418+-11.6243 366.1196+-2.3382 string-fasta 439.6733+-14.7963 ? 441.8207+-7.7052 ? string-tagcloud 225.3708+-7.4796 225.0334+-7.6755 <arithmetic> 629.8016+-5.6205 ? 630.0300+-6.2366 ? might be 1.0004x slower <geometric> * 517.4642+-5.9397 ? 518.0108+-3.8257 ? might be 1.0011x slower <harmonic> 336.9593+-5.5629 ? 342.2204+-4.8509 ? might be 1.0156x slower TipOfTree FixPolyCall V8Spider: crypto 55.8490+-1.6561 54.9303+-1.5342 might be 1.0167x faster deltablue 109.4323+-7.9379 ^ 83.7924+-6.7757 ^ definitely 1.3060x faster earley-boyer 47.2363+-3.6520 ? 47.6353+-2.1398 ? raytrace 43.1516+-0.5055 ^ 41.2514+-0.8062 ^ definitely 1.0461x faster regexp 71.8124+-2.9425 ? 73.7677+-1.9984 ? might be 1.0272x slower richards 102.7402+-26.5313 79.0120+-3.0887 might be 1.3003x faster splay 36.7013+-1.7106 36.0933+-3.0978 might be 1.0168x faster <arithmetic> 66.7033+-4.7709 ^ 59.4975+-0.9404 ^ definitely 1.1211x faster <geometric> * 61.4480+-3.2161 ^ 56.7256+-0.9052 ^ definitely 1.0833x faster <harmonic> 57.0414+-2.3076 54.0350+-0.9939 might be 1.0556x faster TipOfTree FixPolyCall Octane: encrypt 0.23607+-0.00746 0.23540+-0.00751 decrypt 4.11038+-0.18736 ? 4.12621+-0.18494 ? deltablue x2 0.20546+-0.00494 0.20379+-0.00315 earley 0.69655+-0.00649 ? 0.71070+-0.01568 ? might be 1.0203x slower boyer 5.42812+-0.11748 5.37849+-0.03850 navier-stokes x2 5.37391+-0.20773 5.19521+-0.01944 might be 1.0344x faster raytrace x2 1.34170+-0.03551 ? 1.37496+-0.09865 ? might be 1.0248x slower richards x2 0.13704+-0.00557 ? 0.15011+-0.01255 ? might be 1.0954x slower splay x2 0.39117+-0.00307 ? 0.39671+-0.00740 ? might be 1.0142x slower regexp x2 34.67763+-1.37195 33.48366+-0.51511 might be 1.0357x faster pdfjs x2 51.43245+-0.51229 ? 51.46683+-0.34558 ? mandreel x2 54.33918+-1.02912 54.07859+-0.36252 gbemu x2 44.86952+-0.73534 ! 47.37845+-1.07666 ! definitely 1.0559x slower closure 0.57350+-0.00715 0.56479+-0.01064 might be 1.0154x faster jquery 7.59473+-0.35511 7.20646+-0.06271 might be 1.0539x faster box2d x2 15.99452+-0.14954 ? 16.33539+-0.43363 ? might be 1.0213x slower zlib x2 477.97645+-2.72988 ? 503.23821+-33.84595 ? might be 1.0529x slower typescript x2 859.27669+-10.16573 847.97827+-11.97219 might be 1.0133x faster <arithmetic> 103.68903+-0.64792 ? 104.69275+-2.67564 ? might be 1.0097x slower <geometric> * 7.30687+-0.03588 ? 7.37068+-0.07083 ? might be 1.0087x slower <harmonic> 0.75740+-0.01094 ? 0.78177+-0.02638 ? might be 1.0322x slower TipOfTree FixPolyCall Kraken: ai-astar 274.138+-5.178 ? 279.253+-12.471 ? might be 1.0187x slower audio-beat-detection 114.156+-2.080 112.965+-4.623 might be 1.0105x faster audio-dft 163.293+-5.969 156.085+-1.414 might be 1.0462x faster audio-fft 93.559+-23.371 83.208+-2.484 might be 1.1244x faster audio-oscillator 239.754+-6.020 237.256+-3.454 might be 1.0105x faster imaging-darkroom 181.792+-8.301 ? 186.695+-9.071 ? might be 1.0270x slower imaging-desaturate 62.888+-1.672 62.168+-0.453 might be 1.0116x faster imaging-gaussian-blur 112.747+-2.846 ? 114.454+-4.416 ? might be 1.0151x slower json-parse-financial 48.209+-3.360 47.308+-2.103 might be 1.0190x faster json-stringify-tinderbox 60.807+-2.832 59.560+-3.421 might be 1.0209x faster stanford-crypto-aes 58.515+-1.533 ? 60.197+-2.711 ? might be 1.0288x slower stanford-crypto-ccm 56.344+-6.099 ? 62.606+-3.959 ? might be 1.1111x slower stanford-crypto-pbkdf2 176.011+-4.383 172.458+-3.269 might be 1.0206x faster stanford-crypto-sha256-iterative 56.009+-2.462 55.028+-2.161 might be 1.0178x faster <arithmetic> * 121.302+-2.765 120.660+-1.258 might be 1.0053x faster <geometric> 102.278+-2.603 101.844+-1.252 might be 1.0043x faster <harmonic> 87.582+-2.485 87.546+-1.455 might be 1.0004x faster TipOfTree FixPolyCall JSRegress: abs-boolean 2.6049+-0.0677 2.5647+-0.0306 might be 1.0156x faster adapt-to-double-divide 16.9186+-0.3066 16.5565+-0.1070 might be 1.0219x faster aliased-arguments-getbyval 1.1918+-0.1035 1.1116+-0.0355 might be 1.0721x faster allocate-big-object 2.5558+-0.4302 2.4336+-0.1182 might be 1.0502x faster arity-mismatch-inlining 0.8627+-0.0694 0.8506+-0.0687 might be 1.0142x faster array-access-polymorphic-structure 6.6723+-0.7541 ? 6.8214+-1.0141 ? might be 1.0223x slower array-nonarray-polymorhpic-access 39.8150+-12.0110 35.5320+-0.9976 might be 1.1205x faster array-prototype-every 76.2627+-2.3596 ! 83.3018+-2.4938 ! definitely 1.0923x slower array-prototype-forEach 74.7880+-2.9860 ! 82.9992+-2.6629 ! definitely 1.1098x slower array-prototype-map 93.3985+-2.1734 ! 100.6982+-3.8273 ! definitely 1.0782x slower array-prototype-some 76.9130+-3.0117 ? 83.7532+-4.6873 ? might be 1.0889x slower array-splice-contiguous 41.6426+-2.2368 41.0195+-2.1454 might be 1.0152x faster array-with-double-add 4.0129+-0.0710 4.0056+-0.0448 array-with-double-increment 3.2922+-0.1901 ? 3.5830+-0.9336 ? might be 1.0883x slower array-with-double-mul-add 4.9202+-0.0449 ? 4.9234+-0.0678 ? array-with-double-sum 3.2391+-0.0157 3.2382+-0.1135 array-with-int32-add-sub 6.6977+-0.1013 6.6814+-0.2090 array-with-int32-or-double-sum 3.3183+-0.0937 3.2527+-0.0440 might be 1.0202x faster ArrayBuffer-DataView-alloc-large-long-lived 33.6755+-1.8291 32.6456+-1.6186 might be 1.0315x faster ArrayBuffer-DataView-alloc-long-lived 13.7045+-1.0870 13.4375+-1.4760 might be 1.0199x faster ArrayBuffer-Int32Array-byteOffset 3.4444+-0.0684 ? 3.5673+-0.2831 ? might be 1.0357x slower ArrayBuffer-Int8Array-alloc-large-long-lived 33.3881+-1.4565 32.3429+-1.9763 might be 1.0323x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 22.9961+-1.6458 22.6314+-2.0743 might be 1.0161x faster ArrayBuffer-Int8Array-alloc-long-lived 13.9967+-1.5317 12.2891+-0.5588 might be 1.1390x faster ArrayBuffer-Int8Array-alloc 12.2901+-1.5505 11.0680+-1.2785 might be 1.1104x faster asmjs_bool_bug 7.2844+-0.0654 ? 7.4041+-0.2901 ? might be 1.0164x slower assign-custom-setter-polymorphic 3.2333+-0.0379 ^ 2.9891+-0.0500 ^ definitely 1.0817x faster assign-custom-setter 4.8489+-0.5299 4.1934+-0.1572 might be 1.1563x faster basic-set 9.7010+-0.1444 ? 10.0443+-0.4641 ? might be 1.0354x slower big-int-mul 3.9959+-0.0968 3.9931+-0.0636 boolean-test 2.9200+-0.0593 ? 2.9530+-0.0454 ? might be 1.0113x slower branch-fold 3.6387+-0.0489 ? 3.6564+-0.1138 ? by-val-generic 8.5134+-0.3697 ? 8.5792+-0.0806 ? call-spread-apply 20.7251+-1.8108 18.9203+-1.1110 might be 1.0954x faster call-spread-call 15.3475+-0.3227 ? 16.4271+-1.4629 ? might be 1.0703x slower captured-assignments 0.4463+-0.0227 0.4328+-0.0112 might be 1.0312x faster cast-int-to-double 5.3556+-0.2399 5.3299+-0.3069 cell-argument 8.2843+-0.1661 ? 8.4526+-0.2442 ? might be 1.0203x slower cfg-simplify 2.8669+-0.0354 ? 2.9221+-0.0909 ? might be 1.0193x slower chain-getter-access 9.7006+-0.2536 9.6702+-0.3387 cmpeq-obj-to-obj-other 10.5999+-1.0832 ? 10.7236+-1.1801 ? might be 1.0117x slower constant-test 4.8171+-0.0195 4.8051+-0.0281 DataView-custom-properties 39.6448+-2.4336 39.1651+-0.9497 might be 1.0122x faster delay-tear-off-arguments-strictmode 9.2396+-0.8645 8.3322+-0.6098 might be 1.1089x faster destructuring-arguments 5.6628+-0.1177 5.6363+-0.0654 destructuring-swap 4.9360+-0.0456 ? 4.9422+-0.0409 ? direct-arguments-getbyval 1.1482+-0.0917 ? 1.1575+-0.0566 ? div-boolean-double 5.2026+-0.1001 5.1766+-0.0866 div-boolean 7.7222+-0.0770 ? 7.7245+-0.1022 ? double-get-by-val-out-of-bounds 4.2112+-0.0255 ! 4.4477+-0.0444 ! definitely 1.0561x slower double-pollution-getbyval 8.7473+-0.0646 ? 8.8260+-0.1981 ? double-pollution-putbyoffset 4.1319+-0.1219 ? 4.1700+-0.1400 ? double-to-int32-typed-array-no-inline 2.2651+-0.1717 2.1342+-0.0427 might be 1.0614x faster double-to-int32-typed-array 1.9797+-0.1547 ? 1.9797+-0.2214 ? double-to-uint32-typed-array-no-inline 2.5753+-0.6664 2.1806+-0.0403 might be 1.1810x faster double-to-uint32-typed-array 2.0083+-0.0378 2.0072+-0.1096 elidable-new-object-dag 43.5420+-1.4718 41.9149+-2.6828 might be 1.0388x faster elidable-new-object-roflcopter 173.7063+-3.5263 173.6252+-1.9137 elidable-new-object-then-call 40.1200+-3.7072 38.7590+-1.3740 might be 1.0351x faster elidable-new-object-tree 45.3626+-1.1883 44.8440+-1.3154 might be 1.0116x faster empty-string-plus-int 5.4471+-0.2963 5.3599+-0.2293 might be 1.0163x faster emscripten-cube2hash 36.2364+-1.6329 ? 36.5983+-1.8590 ? external-arguments-getbyval 1.3615+-0.1170 1.2933+-0.0318 might be 1.0527x faster external-arguments-putbyval 2.0293+-0.0934 ? 2.0793+-0.1029 ? might be 1.0246x slower fixed-typed-array-storage-var-index 1.2185+-0.0287 ? 1.2506+-0.0690 ? might be 1.0263x slower fixed-typed-array-storage 0.9441+-0.1331 0.8691+-0.0133 might be 1.0863x faster Float32Array-matrix-mult 4.5580+-0.5131 4.4146+-0.2761 might be 1.0325x faster Float32Array-to-Float64Array-set 56.0017+-3.3237 53.4372+-1.0345 might be 1.0480x faster Float64Array-alloc-long-lived 66.2747+-1.7408 ? 66.5922+-1.9978 ? Float64Array-to-Int16Array-set 67.0790+-0.9843 ? 67.1090+-1.5051 ? fold-double-to-int 14.6191+-0.5399 14.4402+-1.4539 might be 1.0124x faster fold-get-by-id-to-multi-get-by-offset-rare-int 17.6242+-0.3059 ^ 14.9293+-0.5075 ^ definitely 1.1805x faster fold-get-by-id-to-multi-get-by-offset 17.7137+-0.7415 ^ 14.7365+-0.6530 ^ definitely 1.2020x faster fold-multi-get-by-offset-to-get-by-offset 12.1895+-0.4597 ? 12.6613+-1.2188 ? might be 1.0387x slower fold-multi-get-by-offset-to-poly-get-by-offset 13.5758+-1.4191 11.7904+-1.3551 might be 1.1514x faster fold-multi-put-by-offset-to-poly-put-by-offset 12.4886+-0.5201 12.2031+-1.9613 might be 1.0234x faster fold-multi-put-by-offset-to-put-by-offset 12.7851+-1.2997 10.8551+-0.7792 might be 1.1778x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 16.1974+-1.0587 ^ 13.0218+-0.8406 ^ definitely 1.2439x faster fold-put-by-id-to-multi-put-by-offset 18.1560+-0.6844 ^ 14.6327+-0.1678 ^ definitely 1.2408x faster fold-put-structure 11.8010+-0.2994 11.5566+-1.3592 might be 1.0211x faster for-of-iterate-array-entries 5.8132+-0.3832 5.5607+-0.1503 might be 1.0454x faster for-of-iterate-array-keys 2.7125+-0.0586 ? 2.7813+-0.1777 ? might be 1.0254x slower for-of-iterate-array-values 2.4795+-0.1348 ? 2.4809+-0.0968 ? fround 19.3899+-0.6530 19.3670+-0.6622 ftl-library-inlining-dataview 71.6540+-2.7304 69.4315+-2.0358 might be 1.0320x faster ftl-library-inlining 84.4565+-16.2125 ? 96.8886+-20.4333 ? might be 1.1472x slower function-dot-apply 1.5692+-0.0589 1.5165+-0.0494 might be 1.0347x faster function-test 3.3249+-0.0604 ? 3.3411+-0.1718 ? function-with-eval 115.9856+-5.7224 112.6545+-4.8517 might be 1.0296x faster gcse-poly-get-less-obvious 19.5771+-1.7588 ? 19.9500+-1.6427 ? might be 1.0190x slower gcse-poly-get 22.2209+-1.3414 ? 22.9461+-2.3563 ? might be 1.0326x slower gcse 4.2405+-0.1065 4.2034+-0.0355 get-by-id-bimorphic-check-structure-elimination-simple 2.7132+-0.0585 2.6760+-0.0734 might be 1.0139x faster get-by-id-bimorphic-check-structure-elimination 6.3677+-0.1292 6.1943+-0.1923 might be 1.0280x faster get-by-id-chain-from-try-block 9.2748+-0.8685 8.9945+-0.1592 might be 1.0312x faster get-by-id-check-structure-elimination 5.1655+-0.0239 ? 5.2098+-0.1419 ? get-by-id-proto-or-self 18.5611+-1.0215 17.8597+-2.0172 might be 1.0393x faster get-by-id-quadmorphic-check-structure-elimination-simple 3.0062+-0.2669 ? 3.3507+-1.1622 ? might be 1.1146x slower get-by-id-self-or-proto 17.7912+-1.2727 17.2415+-0.8768 might be 1.0319x faster get-by-val-out-of-bounds 4.1284+-0.1272 ? 4.1603+-0.2651 ? get_callee_monomorphic 4.1012+-0.6618 3.6544+-0.0675 might be 1.1223x faster get_callee_polymorphic 4.0809+-0.0271 ? 4.1392+-0.1232 ? might be 1.0143x slower getter-no-activation 4.4222+-0.4633 ? 4.4950+-0.2663 ? might be 1.0165x slower getter-richards 136.6946+-9.3738 ^ 122.2817+-2.2576 ^ definitely 1.1179x faster getter 5.0229+-0.0482 ? 5.0430+-0.1408 ? global-var-const-infer-fire-from-opt 0.8567+-0.1081 ? 0.8822+-0.1047 ? might be 1.0298x slower global-var-const-infer 0.9192+-0.0650 0.8480+-0.0625 might be 1.0840x faster HashMap-put-get-iterate-keys 26.4805+-0.7582 ? 29.0417+-5.5071 ? might be 1.0967x slower HashMap-put-get-iterate 26.3799+-0.4008 ? 26.7995+-0.4108 ? might be 1.0159x slower HashMap-string-put-get-iterate 27.2003+-0.6643 ? 27.2336+-1.5220 ? hoist-make-rope 11.6169+-0.8343 11.5478+-1.0306 hoist-poly-check-structure-effectful-loop 4.9361+-0.1230 ? 5.6876+-1.6168 ? might be 1.1522x slower hoist-poly-check-structure 3.6498+-0.0718 3.6466+-0.0445 imul-double-only 7.7137+-0.5618 ? 8.3614+-0.3174 ? might be 1.0840x slower imul-int-only 9.7094+-0.0701 ? 9.7491+-0.1159 ? imul-mixed 7.6849+-0.1759 7.6145+-0.0631 in-four-cases 18.8474+-0.1938 ? 19.1661+-0.5741 ? might be 1.0169x slower in-one-case-false 9.9693+-0.4435 9.7517+-0.0324 might be 1.0223x faster in-one-case-true 9.8102+-0.0472 ? 10.1263+-0.5623 ? might be 1.0322x slower in-two-cases 10.0985+-0.0672 ? 10.1007+-0.1022 ? indexed-properties-in-objects 2.8373+-0.0392 ? 2.8435+-0.0357 ? infer-closure-const-then-mov-no-inline 3.7801+-0.1581 ? 3.8242+-0.1401 ? might be 1.0117x slower infer-closure-const-then-mov 18.9110+-1.5171 18.0459+-0.2999 might be 1.0479x faster infer-closure-const-then-put-to-scope-no-inline 12.1744+-0.1630 11.9859+-0.1549 might be 1.0157x faster infer-closure-const-then-put-to-scope 20.4838+-1.7558 19.5442+-0.9822 might be 1.0481x faster infer-closure-const-then-reenter-no-inline 50.9416+-2.1743 ? 51.9684+-3.5951 ? might be 1.0202x slower infer-closure-const-then-reenter 19.1571+-1.4938 18.9400+-0.9545 might be 1.0115x faster infer-constant-global-property 3.5693+-0.1194 3.4856+-0.0299 might be 1.0240x faster infer-constant-property 2.6448+-0.0569 ? 2.6635+-0.0957 ? infer-one-time-closure-ten-vars 12.8719+-1.8219 12.0554+-0.4227 might be 1.0677x faster infer-one-time-closure-two-vars 12.1540+-1.4230 11.8880+-0.9912 might be 1.0224x faster infer-one-time-closure 12.7484+-1.6343 12.3360+-1.0155 might be 1.0334x faster infer-one-time-deep-closure 20.4493+-0.4741 ? 21.5289+-1.6734 ? might be 1.0528x slower inline-arguments-access 1.9062+-0.0743 1.8636+-0.0462 might be 1.0229x faster inline-arguments-aliased-access 1.7187+-0.1321 1.6523+-0.0407 might be 1.0402x faster inline-arguments-local-escape 12.9386+-1.2555 12.8108+-1.2361 inline-get-scoped-var 4.0952+-0.0252 ? 4.1209+-0.0370 ? inlined-put-by-id-transition 10.8613+-0.6601 10.2812+-0.4419 might be 1.0564x faster int-or-other-abs-then-get-by-val 4.8861+-0.0454 4.8814+-0.0548 int-or-other-abs-zero-then-get-by-val 17.4480+-1.3536 ? 17.9751+-2.0289 ? might be 1.0302x slower int-or-other-add-then-get-by-val 4.2500+-0.0359 ? 5.2919+-2.2765 ? might be 1.2451x slower int-or-other-add 5.1728+-0.0486 ? 5.2887+-0.2863 ? might be 1.0224x slower int-or-other-div-then-get-by-val 4.2227+-0.0328 ? 4.3116+-0.1462 ? might be 1.0211x slower int-or-other-max-then-get-by-val 4.3625+-0.0449 ? 4.5452+-0.2622 ? might be 1.0419x slower int-or-other-min-then-get-by-val 4.4128+-0.0294 ? 4.4677+-0.1552 ? might be 1.0124x slower int-or-other-mod-then-get-by-val 3.9094+-0.0229 3.8742+-0.0217 int-or-other-mul-then-get-by-val 3.9744+-0.2843 3.8763+-0.1171 might be 1.0253x faster int-or-other-neg-then-get-by-val 4.7166+-0.0627 4.6831+-0.0180 int-or-other-neg-zero-then-get-by-val 17.1496+-0.4988 ? 17.5130+-1.2416 ? might be 1.0212x slower int-or-other-sub-then-get-by-val 5.2218+-2.5297 4.3506+-0.2910 might be 1.2003x faster int-or-other-sub 3.4583+-0.0390 ? 3.4927+-0.0803 ? int-overflow-local 4.2684+-0.0361 ? 4.4541+-0.4804 ? might be 1.0435x slower Int16Array-alloc-long-lived 48.8264+-2.6135 ? 48.9718+-1.7517 ? Int16Array-bubble-sort-with-byteLength 20.8721+-0.9930 ? 21.0953+-1.4596 ? might be 1.0107x slower Int16Array-bubble-sort 21.9623+-0.5351 ? 22.1095+-0.8242 ? Int16Array-load-int-mul 1.5120+-0.0723 ? 1.5522+-0.1090 ? might be 1.0266x slower Int16Array-to-Int32Array-set 51.5733+-1.8543 ? 58.0252+-13.7398 ? might be 1.1251x slower Int32Array-alloc-large 26.2203+-0.6322 ? 26.4393+-1.0306 ? Int32Array-alloc-long-lived 54.5660+-0.6658 53.9912+-1.5750 might be 1.0106x faster Int32Array-alloc 3.1350+-0.3421 ? 3.3247+-0.5444 ? might be 1.0605x slower Int32Array-Int8Array-view-alloc 7.1949+-0.8625 7.0646+-0.7978 might be 1.0184x faster int52-spill 7.4267+-0.9127 6.3667+-0.1968 might be 1.1665x faster Int8Array-alloc-long-lived 46.3942+-1.5728 45.9552+-0.8630 Int8Array-load-with-byteLength 3.3898+-0.1268 3.3509+-0.0557 might be 1.0116x faster Int8Array-load 3.3340+-0.0491 3.3210+-0.0492 integer-divide 11.6283+-0.1189 ? 12.2227+-1.0833 ? might be 1.0511x slower integer-modulo 2.0492+-0.0626 ? 2.0613+-0.0904 ? large-int-captured 6.4569+-0.1172 ? 6.7437+-0.9490 ? might be 1.0444x slower large-int-neg 17.2897+-1.2777 16.6168+-0.8426 might be 1.0405x faster large-int 15.2902+-0.1054 ? 15.8517+-0.9536 ? might be 1.0367x slower logical-not 4.6142+-0.1806 ? 4.7382+-0.2123 ? might be 1.0269x slower lots-of-fields 10.0887+-0.3176 ? 10.4023+-1.0792 ? might be 1.0311x slower make-indexed-storage 2.9175+-0.1193 ? 2.9600+-0.1032 ? might be 1.0146x slower make-rope-cse 4.4353+-0.3996 4.1667+-0.1809 might be 1.0645x faster marsaglia-larger-ints 38.3720+-0.5328 ? 38.5032+-0.6003 ? marsaglia-osr-entry 24.5290+-2.6522 24.0444+-2.3899 might be 1.0202x faster max-boolean 2.4333+-0.0300 ? 2.4634+-0.0684 ? might be 1.0124x slower method-on-number 16.9022+-0.9349 ? 17.4259+-0.8304 ? might be 1.0310x slower min-boolean 2.4477+-0.0473 ? 2.4863+-0.1481 ? might be 1.0158x slower minus-boolean-double 3.1052+-0.0582 3.0781+-0.0468 minus-boolean 2.4006+-0.1715 2.2879+-0.0620 might be 1.0493x faster misc-strict-eq 37.3159+-0.8508 ? 38.4224+-1.3396 ? might be 1.0297x slower mod-boolean-double 10.9810+-0.5061 ? 11.0183+-0.3008 ? mod-boolean 7.7192+-0.0146 ? 7.7893+-0.0953 ? mul-boolean-double 3.7732+-0.1671 ? 3.8206+-0.2789 ? might be 1.0126x slower mul-boolean 2.8488+-0.0651 2.7854+-0.0328 might be 1.0228x faster neg-boolean 3.1118+-0.0453 ? 3.1460+-0.1007 ? might be 1.0110x slower negative-zero-divide 0.3488+-0.0281 0.3261+-0.0153 might be 1.0694x faster negative-zero-modulo 0.3314+-0.0087 ? 0.3413+-0.0202 ? might be 1.0300x slower negative-zero-negate 0.3183+-0.0190 0.3016+-0.0175 might be 1.0556x faster nested-function-parsing 24.0308+-1.3673 ? 24.8972+-1.9170 ? might be 1.0361x slower new-array-buffer-dead 2.7240+-0.0582 ? 2.7277+-0.0646 ? new-array-buffer-push 7.3053+-0.7457 ? 7.6665+-0.8677 ? might be 1.0494x slower new-array-dead 11.8805+-0.2619 ? 12.7213+-1.1686 ? might be 1.0708x slower new-array-push 5.1517+-0.2445 5.0889+-0.1182 might be 1.0123x faster number-test 2.8902+-0.0314 2.8855+-0.0381 object-closure-call 5.4802+-0.0298 ? 5.5620+-0.1204 ? might be 1.0149x slower object-test 2.9828+-0.0607 ? 3.0443+-0.0715 ? might be 1.0206x slower obvious-sink-pathology-taken 148.3119+-8.6280 144.5269+-2.0287 might be 1.0262x faster obvious-sink-pathology 141.7208+-1.3928 140.9859+-3.3288 obviously-elidable-new-object 34.5907+-1.1907 ? 35.5520+-1.5682 ? might be 1.0278x slower plus-boolean-arith 2.4513+-0.0288 2.4360+-0.0244 plus-boolean-double 3.1918+-0.1348 3.1234+-0.0592 might be 1.0219x faster plus-boolean 2.3343+-0.0824 2.3328+-0.0520 poly-chain-access-different-prototypes-simple 3.2361+-0.0455 ? 3.2546+-0.1000 ? poly-chain-access-different-prototypes 2.5638+-0.2838 ? 2.6535+-0.2987 ? might be 1.0350x slower poly-chain-access-simpler 3.3602+-0.3052 3.2679+-0.0707 might be 1.0282x faster poly-chain-access 2.6897+-0.2584 2.6052+-0.2897 might be 1.0324x faster poly-stricteq 59.8027+-3.4198 ? 60.7222+-4.0278 ? might be 1.0154x slower polymorphic-array-call 1.6940+-0.0939 1.6844+-0.0418 polymorphic-get-by-id 3.0804+-0.0777 ? 3.1163+-0.1403 ? might be 1.0117x slower polymorphic-put-by-id 30.7161+-3.6300 29.3763+-2.4264 might be 1.0456x faster polymorphic-structure 15.0584+-0.4832 15.0066+-0.4231 polyvariant-monomorphic-get-by-id 8.6912+-0.2956 8.4338+-0.0492 might be 1.0305x faster proto-getter-access 9.6438+-0.0977 ? 9.6527+-0.1413 ? put-by-id-replace-and-transition 8.8872+-0.6357 8.6499+-0.2435 might be 1.0274x faster put-by-id-slightly-polymorphic 2.8848+-0.0709 2.8387+-0.0410 might be 1.0163x faster put-by-id 13.2398+-0.3698 13.1303+-0.3772 put-by-val-direct 0.5466+-0.0245 ? 0.5735+-0.1556 ? might be 1.0493x slower put-by-val-large-index-blank-indexing-type 6.0163+-0.7143 5.8521+-0.7485 might be 1.0281x faster put-by-val-machine-int 2.4974+-0.0346 2.4784+-0.0433 rare-osr-exit-on-local 15.0212+-0.2546 ? 15.0340+-0.5378 ? register-pressure-from-osr 22.3055+-0.8415 22.1149+-0.8654 setter 5.3951+-0.0491 5.3849+-0.0894 simple-activation-demo 25.7234+-0.9541 ? 26.9574+-1.8811 ? might be 1.0480x slower simple-getter-access 13.2102+-2.1809 12.7567+-0.9280 might be 1.0355x faster simple-poly-call-nested 15.4377+-0.7211 ^ 7.7977+-0.1761 ^ definitely 1.9798x faster simple-poly-call 1.2827+-0.0179 1.2245+-0.0861 might be 1.0475x faster sin-boolean 21.2543+-2.3209 ? 21.4231+-1.7895 ? sinkable-new-object-dag 70.0524+-2.1562 69.8431+-1.7089 sinkable-new-object-taken 49.9705+-2.3624 ? 50.6995+-2.4632 ? might be 1.0146x slower sinkable-new-object 39.1710+-0.9024 ? 39.7083+-2.0279 ? might be 1.0137x slower slow-array-profile-convergence 2.6998+-0.0400 2.6559+-0.0572 might be 1.0165x faster slow-convergence 3.1071+-0.0490 ? 3.1219+-0.0471 ? sparse-conditional 1.1255+-0.0587 1.0966+-0.0313 might be 1.0264x faster splice-to-remove 18.3586+-1.9581 17.5758+-1.4759 might be 1.0445x faster string-char-code-at 17.3532+-1.2162 16.6620+-0.3681 might be 1.0415x faster string-concat-object 2.0837+-0.0556 ? 2.1720+-0.1932 ? might be 1.0423x slower string-concat-pair-object 2.1786+-0.1958 2.0755+-0.1352 might be 1.0497x faster string-concat-pair-simple 10.9543+-0.3651 10.7103+-0.3179 might be 1.0228x faster string-concat-simple 11.0822+-0.2624 ? 11.1250+-0.4205 ? string-cons-repeat 7.7448+-0.6293 7.5123+-0.5663 might be 1.0310x faster string-cons-tower 7.8068+-0.3923 7.4906+-0.5982 might be 1.0422x faster string-equality 18.3364+-1.0866 17.7820+-0.8115 might be 1.0312x faster string-get-by-val-big-char 7.1576+-0.2517 7.0474+-0.2871 might be 1.0156x faster string-get-by-val-out-of-bounds-insane 3.7957+-0.0735 3.7852+-0.1266 string-get-by-val-out-of-bounds 5.8351+-1.4429 ? 5.8614+-1.4421 ? string-get-by-val 3.5206+-0.0285 ^ 3.2395+-0.0302 ^ definitely 1.0868x faster string-hash 2.0826+-0.0794 2.0683+-0.2102 string-long-ident-equality 16.6316+-2.4595 15.7700+-1.9074 might be 1.0546x faster string-repeat-arith 33.8362+-3.2219 32.9402+-1.9035 might be 1.0272x faster string-sub 66.7640+-3.9407 ? 68.1994+-2.0446 ? might be 1.0215x slower string-test 2.8356+-0.0733 2.8059+-0.0464 might be 1.0106x faster string-var-equality 30.7239+-0.5379 30.5293+-0.2405 structure-hoist-over-transitions 2.4953+-0.1239 ? 2.5002+-0.1325 ? substring-concat-weird 39.3398+-1.9475 ? 40.2207+-1.8132 ? might be 1.0224x slower substring-concat 42.8111+-3.1394 40.5611+-1.6172 might be 1.0555x faster substring 45.8837+-3.0508 ? 45.9677+-2.2315 ? switch-char-constant 2.6961+-0.0618 2.6659+-0.0966 might be 1.0113x faster switch-char 6.5530+-0.3849 ? 6.5992+-0.5026 ? switch-constant 9.9723+-0.7087 9.9130+-0.4805 switch-string-basic-big-var 15.6877+-1.7898 14.6914+-0.3270 might be 1.0678x faster switch-string-basic-big 15.5298+-1.6479 15.0079+-1.4100 might be 1.0348x faster switch-string-basic-var 16.9318+-1.7600 15.2917+-1.6183 might be 1.1073x faster switch-string-basic 14.6938+-1.9253 ? 15.0055+-1.8105 ? might be 1.0212x slower switch-string-big-length-tower-var 21.3973+-2.8714 20.0861+-0.6103 might be 1.0653x faster switch-string-length-tower-var 14.7623+-0.4733 ? 16.3682+-1.6108 ? might be 1.1088x slower switch-string-length-tower 13.1365+-1.3770 ? 13.8285+-1.8967 ? might be 1.0527x slower switch-string-short 12.4461+-0.2447 ? 12.9090+-1.4015 ? might be 1.0372x slower switch 12.4585+-1.4431 ? 13.1562+-1.0668 ? might be 1.0560x slower tear-off-arguments-simple 2.4137+-0.1236 2.3795+-0.1139 might be 1.0144x faster tear-off-arguments 3.7255+-0.1610 3.6297+-0.1590 might be 1.0264x faster temporal-structure 12.5828+-0.6364 12.0783+-0.1749 might be 1.0418x faster to-int32-boolean 13.6977+-0.2859 ? 14.3160+-1.9184 ? might be 1.0451x slower undefined-property-access 389.8842+-9.6853 388.6372+-14.8223 undefined-test 2.9333+-0.0526 2.8903+-0.0457 might be 1.0149x faster unprofiled-licm 22.8466+-1.3804 22.5964+-0.5660 might be 1.0111x faster weird-inlining-const-prop 2.0200+-0.0920 1.9810+-0.1197 might be 1.0197x faster <arithmetic> 17.8317+-0.0779 17.7639+-0.0823 might be 1.0038x faster <geometric> * 8.2205+-0.0320 ^ 8.1295+-0.0213 ^ definitely 1.0112x faster <harmonic> 4.1167+-0.0266 4.0559+-0.0346 might be 1.0150x faster TipOfTree FixPolyCall AsmBench: bigfib.cpp 500.6852+-5.0778 495.8510+-3.2542 cray.c 480.9032+-11.9170 468.1924+-2.1892 might be 1.0271x faster dry.c 492.6243+-12.5120 ? 515.2286+-15.5100 ? might be 1.0459x slower FloatMM.c 776.3303+-45.9828 734.4489+-5.0235 might be 1.0570x faster gcc-loops.cpp 4316.7029+-221.0614 4264.4427+-168.2738 might be 1.0123x faster n-body.c 1020.4313+-45.0425 998.0839+-6.5351 might be 1.0224x faster Quicksort.c 450.1820+-9.0885 ? 464.3783+-21.6487 ? might be 1.0315x slower stepanov_container.cpp 3745.5236+-355.0059 3604.2242+-23.2952 might be 1.0392x faster Towers.c 263.8844+-2.4640 ? 266.0249+-10.0289 ? <arithmetic> 1338.5853+-42.9698 1312.3194+-19.3890 might be 1.0200x faster <geometric> * 826.2439+-15.2109 819.1920+-7.0102 might be 1.0086x faster <harmonic> 604.3393+-7.5653 ? 604.4607+-6.3356 ? might be 1.0002x slower TipOfTree FixPolyCall CompressionBench: huffman 516.0573+-22.4937 505.2410+-4.1904 might be 1.0214x faster arithmetic-simple 449.3128+-11.0331 448.0127+-15.6114 arithmetic-precise 327.9791+-8.6538 327.7670+-6.4686 arithmetic-complex-precise 327.0308+-8.6137 ? 328.9188+-11.2624 ? arithmetic-precise-order-0 466.0970+-4.5364 ? 480.9045+-11.1181 ? might be 1.0318x slower arithmetic-precise-order-1 369.3030+-11.5207 ? 371.6289+-14.0879 ? arithmetic-precise-order-2 415.0593+-26.3274 ? 461.6051+-143.6895 ? might be 1.1121x slower arithmetic-simple-order-1 487.5367+-15.7168 478.5391+-5.3785 might be 1.0188x faster arithmetic-simple-order-2 539.6783+-20.9272 529.0524+-9.5843 might be 1.0201x faster lz-string 348.9992+-14.6386 ? 350.7224+-4.3016 ? <arithmetic> 424.7053+-1.3866 ? 428.2392+-16.9090 ? might be 1.0083x slower <geometric> * 417.8795+-1.4564 ? 420.7981+-14.2070 ? might be 1.0070x slower <harmonic> 411.1027+-2.1486 ? 413.5972+-12.1648 ? might be 1.0061x slower TipOfTree FixPolyCall All benchmarks: <arithmetic> 102.3111+-1.2242 101.6980+-0.5453 might be 1.0060x faster <geometric> 13.6317+-0.0343 ^ 13.5203+-0.0547 ^ definitely 1.0082x faster <harmonic> 3.4505+-0.0266 ? 3.4568+-0.0459 ? might be 1.0018x slower TipOfTree FixPolyCall Geomean of preferred means: <scaled-result> 67.0029+-0.4776 66.3624+-0.5757 might be 1.0097x faster
Filip Pizlo
Comment 7
2015-01-26 19:48:50 PST
Here is a less noisy run. It clearly shows that we're doing something wrong in Richards. Richards has some polymorphic calls. I'll have to investigate what we're doing there. Also, SunSpider isn't showing a speed-up, which is strange - the main purpose of this was to improve SunSpider. But other compiler start-up time benchmarks are showing improvements, which is promising. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (
r179136
) "FixPolyCall" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (
r179136
) 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 FixPolyCall SunSpider: 3d-cube 7.5815+-0.1623 ? 7.7526+-0.1068 ? might be 1.0226x slower 3d-morph 9.8092+-0.1107 ^ 9.6370+-0.0549 ^ definitely 1.0179x faster 3d-raytrace 9.9220+-0.1417 ? 10.0169+-0.1330 ? access-binary-trees 3.0205+-0.0465 ? 3.0626+-0.0883 ? might be 1.0139x slower access-fannkuch 10.0365+-0.0928 ? 10.0987+-0.1317 ? access-nbody 4.9386+-0.0250 4.9195+-0.0887 access-nsieve 5.5632+-0.0997 ? 5.6114+-0.0852 ? bitops-3bit-bits-in-byte 2.0557+-0.0533 2.0222+-0.0374 might be 1.0165x faster bitops-bits-in-byte 6.9560+-0.0665 6.9181+-0.1392 bitops-bitwise-and 3.3794+-0.0096 3.3430+-0.1112 might be 1.0109x faster bitops-nsieve-bits 5.7636+-0.0884 ? 5.8485+-0.0274 ? might be 1.0147x slower controlflow-recursive 3.2107+-0.0456 ? 3.2297+-0.0522 ? crypto-aes 6.3582+-0.0500 6.3381+-0.0321 crypto-md5 3.8226+-0.1215 ? 3.9580+-0.0523 ? might be 1.0354x slower crypto-sha1 3.8964+-0.0907 3.8750+-0.0858 date-format-tofte 13.9573+-0.7264 ? 13.9841+-0.2716 ? date-format-xparb 8.3298+-0.2130 8.1357+-0.1388 might be 1.0239x faster math-cordic 5.0111+-0.0787 4.9473+-0.0409 might be 1.0129x faster math-partial-sums 10.5314+-0.2331 ? 10.5389+-0.1006 ? math-spectral-norm 3.3203+-0.0305 3.2592+-0.0845 might be 1.0187x faster regexp-dna 11.9778+-0.1338 11.9537+-0.1819 string-base64 6.5921+-0.0476 6.5726+-0.1355 string-fasta 10.4513+-0.1017 10.3003+-0.1578 might be 1.0147x faster string-tagcloud 15.6632+-0.2695 15.5046+-0.1058 might be 1.0102x faster string-unpack-code 31.7536+-0.6477 31.5404+-0.2875 string-validate-input 7.4191+-0.1034 ? 7.4209+-0.1229 ? <arithmetic> * 8.1277+-0.0287 8.1073+-0.0290 might be 1.0025x faster <geometric> 6.7176+-0.0192 6.7085+-0.0184 might be 1.0013x faster <harmonic> 5.6723+-0.0295 5.6642+-0.0201 might be 1.0014x faster TipOfTree FixPolyCall LongSpider: 3d-cube 1361.5319+-8.9989 1355.0175+-9.2741 3d-morph 2281.1131+-1.5369 ? 2287.5930+-11.1696 ? 3d-raytrace 1281.7066+-19.7997 1274.9945+-11.8870 access-binary-trees 1623.4429+-5.2031 ? 1638.7830+-52.2495 ? access-fannkuch 527.6164+-14.4061 ? 528.7609+-15.8620 ? access-nbody 1230.3524+-3.9376 1229.6328+-1.3139 access-nsieve 1534.3455+-1.4296 1531.6598+-4.4802 bitops-3bit-bits-in-byte 57.1425+-0.3988 57.0953+-0.2071 bitops-bits-in-byte 388.0894+-8.7618 385.9900+-7.2083 bitops-nsieve-bits 1145.9926+-0.7123 1145.9567+-5.4090 controlflow-recursive 885.9849+-0.6954 ? 886.5292+-0.6564 ? crypto-aes 1108.9457+-13.4468 1099.0426+-4.0424 crypto-md5 951.2662+-10.4669 ? 965.2819+-14.9148 ? might be 1.0147x slower crypto-sha1 1157.5897+-12.6367 1153.8704+-3.0046 date-format-tofte 1221.3362+-9.8889 ? 1242.6692+-20.7652 ? might be 1.0175x slower date-format-xparb 1173.3985+-26.9964 ? 1178.6465+-15.5854 ? math-cordic 820.7515+-0.6929 819.7214+-1.8062 math-partial-sums 1309.5774+-2.1018 ? 1309.9017+-3.2197 ? math-spectral-norm 1302.8190+-11.5240 1297.9260+-0.8491 string-base64 568.8195+-2.3222 ? 568.8405+-2.5863 ? string-fasta 710.4099+-5.5257 ^ 697.2695+-2.5474 ^ definitely 1.0188x faster string-tagcloud 368.6283+-6.6334 361.6895+-2.2190 might be 1.0192x faster <arithmetic> 1045.9482+-1.6816 ? 1046.2215+-2.7473 ? might be 1.0003x slower <geometric> * 874.8948+-1.7992 874.0253+-2.1656 might be 1.0010x faster <harmonic> 534.9330+-2.2282 533.8218+-1.8425 might be 1.0021x faster TipOfTree FixPolyCall V8Spider: crypto 81.9673+-1.0641 ? 83.0882+-1.7375 ? might be 1.0137x slower deltablue 122.7781+-1.9660 ^ 97.3098+-2.0512 ^ definitely 1.2617x faster earley-boyer 72.4917+-0.2813 72.2585+-0.7101 raytrace 53.5066+-0.9923 ^ 49.4819+-0.8061 ^ definitely 1.0813x faster regexp 116.8440+-0.6929 ? 117.0502+-0.6449 ? richards 113.1674+-0.9047 ^ 105.7589+-1.4353 ^ definitely 1.0701x faster splay 57.9990+-2.5130 56.3223+-1.6640 might be 1.0298x faster <arithmetic> 88.3934+-0.4904 ^ 83.0385+-0.4789 ^ definitely 1.0645x faster <geometric> * 84.1618+-0.5207 ^ 79.5389+-0.4536 ^ definitely 1.0581x faster <harmonic> 80.0056+-0.5779 ^ 75.9743+-0.5274 ^ definitely 1.0531x faster TipOfTree FixPolyCall Octane: encrypt 0.38764+-0.00559 ? 0.38879+-0.00517 ? decrypt 6.81660+-0.00576 ? 6.82924+-0.02685 ? deltablue x2 0.31960+-0.00099 ? 0.32190+-0.00335 ? earley 1.23142+-0.01274 1.22760+-0.00612 boyer 10.54749+-0.02812 10.41545+-0.13390 might be 1.0127x faster navier-stokes x2 7.74534+-0.00532 7.74429+-0.01088 raytrace x2 2.27275+-0.09353 ? 2.27535+-0.11742 ? richards x2 0.20282+-0.00366 ! 0.23787+-0.01840 ! definitely 1.1728x slower splay x2 0.61542+-0.00481 ? 0.62202+-0.00803 ? might be 1.0107x slower regexp x2 59.08863+-0.29472 58.61115+-0.30563 pdfjs x2 84.39290+-0.30881 84.20211+-0.78989 mandreel x2 88.58676+-0.52712 88.09275+-0.32743 gbemu x2 75.22039+-1.06138 ! 82.26167+-1.53264 ! definitely 1.0936x slower closure 0.91824+-0.00257 0.91568+-0.00171 jquery 11.92135+-0.01924 11.89289+-0.13603 box2d x2 28.09959+-0.31097 28.04878+-0.29651 zlib x2 790.62085+-2.97169 775.36279+-42.36094 might be 1.0197x faster typescript x2 1277.91634+-16.49183 1271.45736+-18.04910 <arithmetic> 162.06618+-1.22661 161.00486+-2.81174 might be 1.0066x faster <geometric> * 11.85432+-0.03897 ? 12.02470+-0.13914 ? might be 1.0144x slower <harmonic> 1.17656+-0.00825 ! 1.25074+-0.03760 ! definitely 1.0630x slower TipOfTree FixPolyCall Kraken: ai-astar 528.422+-1.142 ? 528.449+-1.562 ? audio-beat-detection 200.986+-0.673 199.525+-3.547 audio-dft 259.561+-23.398 251.181+-1.361 might be 1.0334x faster audio-fft 131.952+-0.828 ? 132.254+-0.730 ? audio-oscillator 356.559+-0.997 ? 357.245+-1.329 ? imaging-darkroom 286.378+-0.375 ? 286.842+-0.943 ? imaging-desaturate 112.803+-0.288 ? 112.835+-0.209 ? imaging-gaussian-blur 183.544+-0.665 ? 183.635+-0.429 ? json-parse-financial 86.921+-0.619 ^ 82.171+-0.575 ^ definitely 1.0578x faster json-stringify-tinderbox 103.267+-1.143 101.750+-0.625 might be 1.0149x faster stanford-crypto-aes 98.924+-1.052 ? 99.443+-1.052 ? stanford-crypto-ccm 87.515+-10.963 ? 95.975+-4.247 ? might be 1.0967x slower stanford-crypto-pbkdf2 272.576+-2.429 ? 275.023+-1.520 ? stanford-crypto-sha256-iterative 107.730+-0.972 107.164+-0.570 <arithmetic> * 201.224+-2.229 200.964+-0.508 might be 1.0013x faster <geometric> 170.404+-2.188 ? 170.452+-0.751 ? might be 1.0003x slower <harmonic> 147.795+-2.416 ? 148.153+-0.965 ? might be 1.0024x slower TipOfTree FixPolyCall JSRegress: abs-boolean 4.4034+-0.0527 ? 4.4085+-0.0574 ? adapt-to-double-divide 20.3856+-0.4091 20.2237+-0.3619 aliased-arguments-getbyval 1.8081+-0.0113 1.7943+-0.0271 allocate-big-object 3.9622+-0.1399 ? 4.0366+-0.0522 ? might be 1.0188x slower arity-mismatch-inlining 1.2097+-0.0148 1.1830+-0.0168 might be 1.0226x faster array-access-polymorphic-structure 11.0122+-0.2241 ? 11.1973+-0.1668 ? might be 1.0168x slower array-nonarray-polymorhpic-access 57.6248+-0.2487 57.5643+-0.2313 array-prototype-every 125.1196+-0.8436 ! 132.3649+-1.8905 ! definitely 1.0579x slower array-prototype-forEach 124.2053+-1.0871 ! 130.0935+-1.7421 ! definitely 1.0474x slower array-prototype-map 149.4895+-2.5467 ! 158.2474+-2.6354 ! definitely 1.0586x slower array-prototype-some 125.3059+-1.8168 ! 132.4377+-1.6100 ! definitely 1.0569x slower array-splice-contiguous 68.5832+-0.4377 67.9850+-0.7215 array-with-double-add 6.4950+-0.1471 ? 6.5256+-0.0607 ? array-with-double-increment 4.7965+-0.0676 ? 4.8455+-0.1000 ? might be 1.0102x slower array-with-double-mul-add 8.3687+-0.1078 ? 8.4645+-0.1031 ? might be 1.0115x slower array-with-double-sum 5.1441+-0.0685 5.0917+-0.0487 might be 1.0103x faster array-with-int32-add-sub 11.1366+-0.0699 ? 11.3333+-0.1595 ? might be 1.0177x slower array-with-int32-or-double-sum 5.2172+-0.0607 5.1490+-0.0553 might be 1.0132x faster ArrayBuffer-DataView-alloc-large-long-lived 59.3319+-0.8240 ? 59.6520+-1.1811 ? ArrayBuffer-DataView-alloc-long-lived 23.9583+-0.2827 ? 24.0300+-0.3848 ? ArrayBuffer-Int32Array-byteOffset 5.5673+-0.1114 ? 5.6662+-0.0275 ? might be 1.0178x slower ArrayBuffer-Int8Array-alloc-large-long-lived 61.9939+-1.7986 ? 62.4517+-0.6124 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 40.7150+-0.6543 40.1014+-0.1143 might be 1.0153x faster ArrayBuffer-Int8Array-alloc-long-lived 23.5614+-1.1643 23.0718+-0.3132 might be 1.0212x faster ArrayBuffer-Int8Array-alloc 20.1064+-0.4768 19.9118+-0.2162 asmjs_bool_bug 10.3083+-0.1224 ? 10.4773+-0.1311 ? might be 1.0164x slower assign-custom-setter-polymorphic 5.1355+-0.1876 5.0064+-0.0304 might be 1.0258x faster assign-custom-setter 6.6882+-0.1071 ? 6.8825+-0.3012 ? might be 1.0291x slower basic-set 15.8947+-0.2218 15.6545+-0.1990 might be 1.0153x faster big-int-mul 6.7691+-0.1894 ? 6.7691+-0.1631 ? boolean-test 5.0315+-0.0649 5.0009+-0.0483 branch-fold 5.4591+-0.0394 5.4098+-0.0369 by-val-generic 12.6405+-0.2689 ? 12.7661+-0.4698 ? call-spread-apply 29.2950+-0.2775 ? 29.3957+-0.2642 ? call-spread-call 25.3347+-0.1400 ! 29.8722+-0.3581 ! definitely 1.1791x slower captured-assignments 0.6483+-0.0058 0.6385+-0.0053 might be 1.0154x faster cast-int-to-double 9.6417+-0.1787 9.5950+-0.1289 cell-argument 11.2107+-0.3723 ? 11.3278+-0.0787 ? might be 1.0104x slower cfg-simplify 4.3442+-0.1882 4.3095+-0.0346 chain-getter-access 13.8563+-0.2066 ? 13.9326+-0.1152 ? cmpeq-obj-to-obj-other 13.9104+-0.3735 13.8570+-0.3058 constant-test 9.0547+-0.1745 ? 9.0676+-0.2008 ? DataView-custom-properties 67.3010+-0.8402 66.9647+-0.5664 delay-tear-off-arguments-strictmode 14.2341+-0.2316 ! 14.9486+-0.1825 ! definitely 1.0502x slower destructuring-arguments 10.4858+-0.0599 ? 10.5466+-0.1202 ? destructuring-swap 9.2591+-0.1299 9.0770+-0.1246 might be 1.0201x faster direct-arguments-getbyval 1.7957+-0.0212 ? 1.7975+-0.0238 ? div-boolean-double 6.5337+-0.1133 ? 6.5499+-0.1538 ? div-boolean 11.7613+-0.1810 11.7094+-0.1627 double-get-by-val-out-of-bounds 6.7611+-0.1389 ? 7.0837+-0.3989 ? might be 1.0477x slower double-pollution-getbyval 11.3762+-0.2762 11.3294+-0.2074 double-pollution-putbyoffset 6.3781+-0.0914 6.3370+-0.1762 double-to-int32-typed-array-no-inline 3.2343+-0.0686 ? 3.2760+-0.0416 ? might be 1.0129x slower double-to-int32-typed-array 2.8285+-0.1008 ? 2.8741+-0.0531 ? might be 1.0161x slower double-to-uint32-typed-array-no-inline 3.4023+-0.0567 ^ 3.3009+-0.0403 ^ definitely 1.0307x faster double-to-uint32-typed-array 3.0218+-0.0610 2.9689+-0.0538 might be 1.0178x faster elidable-new-object-dag 63.0132+-1.0829 62.4923+-0.8702 elidable-new-object-roflcopter 244.0214+-2.2848 243.1897+-2.6869 elidable-new-object-then-call 57.0220+-1.4296 56.8922+-1.2225 elidable-new-object-tree 70.3890+-0.8029 ? 70.5164+-1.8963 ? empty-string-plus-int 8.8884+-0.1133 ? 8.9207+-0.1201 ? emscripten-cube2hash 53.8701+-0.4382 53.4736+-0.3737 external-arguments-getbyval 2.2084+-0.0258 ? 2.2712+-0.0643 ? might be 1.0284x slower external-arguments-putbyval 3.3680+-0.0172 3.3366+-0.0309 fixed-typed-array-storage-var-index 1.6372+-0.0280 1.6268+-0.0298 fixed-typed-array-storage 1.2558+-0.0323 1.2176+-0.0106 might be 1.0314x faster Float32Array-matrix-mult 6.8122+-0.0535 6.7735+-0.0908 Float32Array-to-Float64Array-set 90.2367+-2.1576 89.8655+-2.2028 Float64Array-alloc-long-lived 101.7918+-1.0985 ? 101.9213+-0.7797 ? Float64Array-to-Int16Array-set 112.7216+-0.7609 112.5348+-1.0762 fold-double-to-int 20.1327+-0.1763 ? 20.2313+-0.2828 ? fold-get-by-id-to-multi-get-by-offset-rare-int 24.4086+-0.2492 ^ 18.7358+-0.5021 ^ definitely 1.3028x faster fold-get-by-id-to-multi-get-by-offset 23.0310+-0.3361 ^ 17.2620+-0.2660 ^ definitely 1.3342x faster fold-multi-get-by-offset-to-get-by-offset 17.9065+-0.0974 ^ 12.9003+-0.1680 ^ definitely 1.3881x faster fold-multi-get-by-offset-to-poly-get-by-offset 17.9795+-0.3341 ^ 12.7849+-0.1570 ^ definitely 1.4063x faster fold-multi-put-by-offset-to-poly-put-by-offset 16.9926+-0.1267 ^ 12.4724+-0.2531 ^ definitely 1.3624x faster fold-multi-put-by-offset-to-put-by-offset 15.9093+-0.1715 ^ 11.5390+-0.3743 ^ definitely 1.3787x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 22.6215+-0.1233 ^ 17.7499+-0.3477 ^ definitely 1.2745x faster fold-put-by-id-to-multi-put-by-offset 23.4626+-0.3731 ^ 18.3753+-0.3678 ^ definitely 1.2769x faster fold-put-structure 16.9591+-0.1113 ^ 12.7107+-0.7837 ^ definitely 1.3342x faster for-of-iterate-array-entries 8.5702+-0.1989 ? 8.7860+-0.1125 ? might be 1.0252x slower for-of-iterate-array-keys 4.0304+-0.0902 ? 4.0523+-0.0510 ? for-of-iterate-array-values 3.5007+-0.0342 3.4681+-0.0536 fround 23.7790+-0.4236 23.7212+-0.3142 ftl-library-inlining-dataview 107.8218+-6.8432 ? 107.9261+-5.7013 ? ftl-library-inlining 141.0395+-21.3123 130.3971+-11.5483 might be 1.0816x faster function-dot-apply 2.7243+-0.0654 ? 2.7443+-0.0424 ? function-test 5.4431+-0.0929 5.4399+-0.0854 function-with-eval 181.0358+-1.1848 ? 184.8003+-8.5852 ? might be 1.0208x slower gcse-poly-get-less-obvious 29.2733+-0.2691 ? 29.3977+-0.4543 ? gcse-poly-get 29.7768+-0.1722 29.6702+-0.1838 gcse 7.6545+-0.1549 ? 7.6794+-0.0750 ? get-by-id-bimorphic-check-structure-elimination-simple 3.9118+-0.0929 3.8987+-0.0656 get-by-id-bimorphic-check-structure-elimination 9.7928+-0.1061 ? 9.9357+-0.1193 ? might be 1.0146x slower get-by-id-chain-from-try-block 19.3918+-0.2014 19.2956+-0.0504 get-by-id-check-structure-elimination 8.8954+-0.0901 8.8353+-0.1574 get-by-id-proto-or-self 25.7747+-2.6243 24.9370+-1.6388 might be 1.0336x faster get-by-id-quadmorphic-check-structure-elimination-simple 4.6125+-0.0632 ? 4.6138+-0.0512 ? get-by-id-self-or-proto 25.4762+-1.7482 ? 25.6415+-2.7473 ? get-by-val-out-of-bounds 6.6827+-0.2402 ? 6.9101+-0.1139 ? might be 1.0340x slower get_callee_monomorphic 5.9041+-0.1093 ? 6.0079+-0.1356 ? might be 1.0176x slower get_callee_polymorphic 6.0200+-0.0791 5.9029+-0.1017 might be 1.0198x faster getter-no-activation 6.8717+-0.0586 ? 6.9696+-0.0958 ? might be 1.0143x slower getter-richards 156.2186+-7.6846 ^ 144.1081+-3.6898 ^ definitely 1.0840x faster getter 7.7855+-0.2198 ? 7.8150+-0.1012 ? global-var-const-infer-fire-from-opt 1.3440+-0.0805 1.3072+-0.0928 might be 1.0282x faster global-var-const-infer 1.2848+-0.0324 ? 1.2893+-0.0310 ? HashMap-put-get-iterate-keys 40.7632+-0.4200 ? 41.2675+-0.7746 ? might be 1.0124x slower HashMap-put-get-iterate 40.0997+-0.5484 ? 40.2276+-0.9885 ? HashMap-string-put-get-iterate 39.7029+-0.2828 ? 39.7985+-0.8728 ? hoist-make-rope 14.0520+-1.2434 ? 15.1226+-0.2043 ? might be 1.0762x slower hoist-poly-check-structure-effectful-loop 7.8809+-0.2188 ? 7.9463+-0.2216 ? hoist-poly-check-structure 5.7093+-0.0761 5.6996+-0.0670 imul-double-only 10.1100+-0.3188 ? 10.1849+-0.2018 ? imul-int-only 13.0698+-0.1875 13.0590+-0.1780 imul-mixed 9.8538+-0.7520 ? 9.9960+-0.6092 ? might be 1.0144x slower in-four-cases 28.6838+-0.1025 ? 28.7319+-0.2741 ? in-one-case-false 14.8882+-0.0848 ? 14.9156+-0.1571 ? in-one-case-true 14.9108+-0.0733 14.8749+-0.1111 in-two-cases 15.4172+-0.1741 ? 15.5855+-0.1516 ? might be 1.0109x slower indexed-properties-in-objects 4.3853+-0.1387 ? 4.4346+-0.0617 ? might be 1.0112x slower infer-closure-const-then-mov-no-inline 5.1926+-0.1278 ? 5.2007+-0.0742 ? infer-closure-const-then-mov 29.4766+-0.1191 ? 29.5035+-0.1232 ? infer-closure-const-then-put-to-scope-no-inline 17.7720+-0.2902 17.7305+-0.1544 infer-closure-const-then-put-to-scope 35.5169+-0.0876 ? 35.6212+-0.1137 ? infer-closure-const-then-reenter-no-inline 81.1805+-0.3176 81.0754+-0.1099 infer-closure-const-then-reenter 35.0501+-0.2376 34.8089+-0.3926 infer-constant-global-property 5.5928+-0.0578 ? 5.6057+-0.0555 ? infer-constant-property 3.8763+-0.0689 3.8607+-0.0748 infer-one-time-closure-ten-vars 16.5282+-0.1816 ? 16.6178+-0.2955 ? infer-one-time-closure-two-vars 16.0394+-0.2331 15.9242+-0.2211 infer-one-time-closure 15.9484+-0.2987 15.7686+-0.2045 might be 1.0114x faster infer-one-time-deep-closure 28.2682+-0.2297 ? 28.2984+-0.2719 ? inline-arguments-access 3.0078+-0.0445 2.9217+-0.0662 might be 1.0295x faster inline-arguments-aliased-access 2.8220+-0.0303 2.8117+-0.0539 inline-arguments-local-escape 21.7090+-0.2720 ^ 20.6118+-0.1864 ^ definitely 1.0532x faster inline-get-scoped-var 6.7216+-0.0357 ? 6.7505+-0.0708 ? inlined-put-by-id-transition 18.3134+-0.4426 17.6666+-0.7248 might be 1.0366x faster int-or-other-abs-then-get-by-val 8.0928+-0.1854 ? 8.2449+-0.0776 ? might be 1.0188x slower int-or-other-abs-zero-then-get-by-val 30.6063+-0.2556 ? 30.7075+-0.1709 ? int-or-other-add-then-get-by-val 6.9610+-0.1211 ? 6.9681+-0.0550 ? int-or-other-add 9.2728+-0.1620 9.2485+-0.1527 int-or-other-div-then-get-by-val 6.1310+-0.0679 6.0581+-0.1854 might be 1.0120x faster int-or-other-max-then-get-by-val 7.7955+-0.1717 7.7401+-0.3330 int-or-other-min-then-get-by-val 6.2766+-0.0675 6.2382+-0.0684 int-or-other-mod-then-get-by-val 5.9243+-0.2088 ? 6.0086+-0.1553 ? might be 1.0142x slower int-or-other-mul-then-get-by-val 5.9270+-0.1199 ? 5.9280+-0.1285 ? int-or-other-neg-then-get-by-val 7.4115+-0.0510 7.3302+-0.0695 might be 1.0111x faster int-or-other-neg-zero-then-get-by-val 30.5800+-0.1710 ? 30.6747+-0.1747 ? int-or-other-sub-then-get-by-val 6.9369+-0.1227 ? 6.9496+-0.1175 ? int-or-other-sub 5.9583+-0.2879 ? 6.0190+-0.2397 ? might be 1.0102x slower int-overflow-local 6.8895+-0.0996 6.8888+-0.0541 Int16Array-alloc-long-lived 73.7036+-1.2096 73.3246+-0.5092 Int16Array-bubble-sort-with-byteLength 43.8259+-0.1227 ? 43.8784+-0.4619 ? Int16Array-bubble-sort 42.3573+-0.3010 ? 42.4847+-0.1244 ? Int16Array-load-int-mul 2.2148+-0.0432 2.2027+-0.0393 Int16Array-to-Int32Array-set 84.0289+-1.9929 83.2220+-0.5603 Int32Array-alloc-large 42.9993+-1.2904 42.5151+-1.2739 might be 1.0114x faster Int32Array-alloc-long-lived 80.6552+-0.5656 ? 81.0398+-0.4786 ? Int32Array-alloc 4.8960+-0.1885 ? 4.9203+-0.0615 ? Int32Array-Int8Array-view-alloc 12.3295+-0.2148 12.0706+-0.2464 might be 1.0214x faster int52-spill 9.9876+-0.2265 9.6867+-0.2357 might be 1.0311x faster Int8Array-alloc-long-lived 66.8200+-0.5778 65.8551+-0.6214 might be 1.0147x faster Int8Array-load-with-byteLength 5.6347+-0.0683 5.5768+-0.0618 might be 1.0104x faster Int8Array-load 5.6127+-0.0714 ? 5.6601+-0.0956 ? integer-divide 17.0110+-0.1457 ? 17.0370+-0.1641 ? integer-modulo 3.0484+-0.0761 2.9958+-0.0723 might be 1.0175x faster large-int-captured 12.8605+-0.2808 ? 13.1573+-0.1386 ? might be 1.0231x slower large-int-neg 24.0554+-0.5072 ? 24.3747+-0.4146 ? might be 1.0133x slower large-int 21.4970+-0.3571 ? 21.7906+-0.4251 ? might be 1.0137x slower logical-not 7.9027+-0.4658 7.4226+-0.1493 might be 1.0647x faster lots-of-fields 18.2312+-0.1145 ? 18.3298+-0.2104 ? make-indexed-storage 4.6942+-0.4122 ? 4.7663+-0.2861 ? might be 1.0154x slower make-rope-cse 6.2630+-0.0300 ? 6.2693+-0.0610 ? marsaglia-larger-ints 64.0637+-0.6226 ? 64.1947+-0.8197 ? marsaglia-osr-entry 31.2587+-0.3349 ? 31.6539+-0.5360 ? might be 1.0126x slower max-boolean 3.9037+-0.0677 3.8855+-0.0437 method-on-number 27.6343+-0.3032 ! 28.4398+-0.2556 ! definitely 1.0291x slower min-boolean 3.7740+-0.0681 ? 3.8137+-0.0857 ? might be 1.0105x slower minus-boolean-double 4.9151+-0.0985 ? 4.9517+-0.0287 ? minus-boolean 3.8144+-0.0490 3.7889+-0.0475 misc-strict-eq 57.2335+-3.5239 ? 57.4887+-3.2569 ? mod-boolean-double 13.8448+-0.1437 ? 14.0500+-0.2710 ? might be 1.0148x slower mod-boolean 10.6334+-0.1791 ? 10.7529+-0.2175 ? might be 1.0112x slower mul-boolean-double 5.7734+-0.0483 5.7378+-0.0307 mul-boolean 4.1329+-0.0469 4.0835+-0.0378 might be 1.0121x faster neg-boolean 5.0416+-0.0685 5.0236+-0.0382 negative-zero-divide 0.4674+-0.0032 0.4653+-0.0059 negative-zero-modulo 0.4719+-0.0026 0.4685+-0.0048 negative-zero-negate 0.4414+-0.0072 0.4389+-0.0034 nested-function-parsing 40.0349+-0.1638 ? 40.1733+-0.2155 ? new-array-buffer-dead 4.3928+-0.0808 ? 4.4230+-0.1359 ? new-array-buffer-push 10.7449+-0.2050 ? 10.8024+-0.2667 ? new-array-dead 14.9914+-0.2331 14.7856+-0.3395 might be 1.0139x faster new-array-push 7.3912+-0.1724 7.3869+-0.2498 number-test 4.8704+-0.0497 ? 4.8722+-0.0340 ? object-closure-call 9.0166+-0.0720 9.0077+-0.0353 object-test 5.2528+-0.0662 5.2255+-0.0632 obvious-sink-pathology-taken 207.8750+-1.5401 206.5188+-0.8723 obvious-sink-pathology 198.9239+-2.2818 196.9643+-1.7760 obviously-elidable-new-object 51.5151+-1.1394 ? 51.5998+-0.3645 ? plus-boolean-arith 3.8391+-0.0543 3.8382+-0.0497 plus-boolean-double 4.9907+-0.0233 4.9806+-0.0357 plus-boolean 3.7338+-0.0606 ? 3.7657+-0.0478 ? poly-chain-access-different-prototypes-simple 4.5207+-0.0555 ? 4.5854+-0.0539 ? might be 1.0143x slower poly-chain-access-different-prototypes 2.9885+-0.0644 ? 3.0852+-0.1416 ? might be 1.0323x slower poly-chain-access-simpler 4.5160+-0.0516 4.5120+-0.0593 poly-chain-access 3.0717+-0.3408 2.9342+-0.0155 might be 1.0468x faster poly-stricteq 85.7221+-0.5835 84.9334+-1.5628 polymorphic-array-call 2.3772+-0.0421 ? 2.4541+-0.0437 ? might be 1.0324x slower polymorphic-get-by-id 4.9237+-0.0555 ? 4.9903+-0.2014 ? might be 1.0135x slower polymorphic-put-by-id 45.6350+-5.2817 44.3319+-1.8418 might be 1.0294x faster polymorphic-structure 29.6200+-0.1921 ? 29.8777+-0.6132 ? polyvariant-monomorphic-get-by-id 13.0732+-0.1326 12.9604+-0.2771 proto-getter-access 13.8151+-0.2484 ? 13.9161+-0.2005 ? put-by-id-replace-and-transition 12.8161+-0.2448 ? 12.8690+-0.0812 ? put-by-id-slightly-polymorphic 4.1845+-0.0433 4.1661+-0.0347 put-by-id 21.4096+-0.1765 ? 21.6488+-0.4165 ? might be 1.0112x slower put-by-val-direct 0.8338+-0.0107 0.8253+-0.0129 might be 1.0103x faster put-by-val-large-index-blank-indexing-type 10.4066+-0.2836 9.9341+-0.2864 might be 1.0476x faster put-by-val-machine-int 4.2558+-0.1647 ? 4.2651+-0.2319 ? rare-osr-exit-on-local 21.8853+-0.1549 21.8109+-0.0802 register-pressure-from-osr 31.9952+-0.1778 ? 32.0128+-0.2576 ? setter 7.6802+-0.0888 7.6266+-0.1509 simple-activation-demo 39.1651+-0.1808 ? 39.2475+-0.1056 ? simple-getter-access 19.9055+-0.2273 ? 19.9231+-0.2430 ? simple-poly-call-nested 22.7512+-0.3884 ^ 10.9276+-0.0788 ^ definitely 2.0820x faster simple-poly-call 1.7993+-0.0393 ^ 1.7212+-0.0317 ^ definitely 1.0454x faster sin-boolean 23.9953+-1.0165 23.8555+-0.9317 sinkable-new-object-dag 94.6180+-0.9197 ? 95.0242+-0.9176 ? sinkable-new-object-taken 79.3456+-1.0662 ? 79.5811+-0.7475 ? sinkable-new-object 56.3257+-1.8549 55.9158+-4.1539 slow-array-profile-convergence 4.3966+-0.1306 4.2683+-0.1784 might be 1.0301x faster slow-convergence 5.1195+-0.0715 5.1038+-0.0527 sparse-conditional 1.7051+-0.0193 1.6800+-0.0372 might be 1.0150x faster splice-to-remove 27.4496+-0.2081 ? 27.5444+-0.2284 ? string-char-code-at 23.6293+-0.1073 23.6223+-0.2634 string-concat-object 3.2587+-0.0380 3.2351+-0.0325 string-concat-pair-object 3.1864+-0.0593 3.1777+-0.0683 string-concat-pair-simple 18.4221+-0.2847 ? 18.6420+-0.2183 ? might be 1.0119x slower string-concat-simple 18.6597+-0.4171 18.6533+-0.3637 string-cons-repeat 12.0290+-0.0978 12.0212+-0.0706 string-cons-tower 11.0943+-0.0470 11.0676+-0.0376 string-equality 26.4648+-0.1424 ? 26.7231+-0.5822 ? string-get-by-val-big-char 12.6775+-0.2054 12.5449+-0.2514 might be 1.0106x faster string-get-by-val-out-of-bounds-insane 6.6756+-0.0439 ? 6.7731+-0.2022 ? might be 1.0146x slower string-get-by-val-out-of-bounds 8.0020+-0.1288 8.0000+-0.2360 string-get-by-val 5.7049+-0.0171 5.6837+-0.0264 string-hash 3.1087+-0.0664 3.0671+-0.0483 might be 1.0136x faster string-long-ident-equality 21.3425+-0.2398 ? 21.6949+-0.1132 ? might be 1.0165x slower string-repeat-arith 61.4371+-6.3206 ^ 49.2359+-0.4752 ^ definitely 1.2478x faster string-sub 99.3842+-6.4919 96.9591+-0.5538 might be 1.0250x faster string-test 4.8473+-0.0321 ? 4.8865+-0.0672 ? string-var-equality 52.4665+-0.5950 ? 52.8529+-1.2817 ? structure-hoist-over-transitions 3.8976+-0.0409 ? 3.9044+-0.0255 ? substring-concat-weird 62.4399+-0.6087 ? 63.2601+-0.6042 ? might be 1.0131x slower substring-concat 65.9036+-0.4505 ? 66.0607+-0.2561 ? substring 74.6895+-0.3204 74.2843+-0.1658 switch-char-constant 3.9087+-0.0449 ? 3.9139+-0.0230 ? switch-char 9.4338+-0.1715 9.4010+-0.0966 switch-constant 17.0259+-0.4924 16.9674+-1.6811 switch-string-basic-big-var 25.4707+-1.6434 ? 26.3865+-0.6814 ? might be 1.0360x slower switch-string-basic-big 27.2079+-2.8004 25.5811+-1.5607 might be 1.0636x faster switch-string-basic-var 34.5253+-1.9558 34.4420+-1.4975 switch-string-basic 27.1927+-0.7025 ? 28.2575+-0.7094 ? might be 1.0392x slower switch-string-big-length-tower-var 29.9479+-0.1943 ? 30.0149+-0.3035 ? switch-string-length-tower-var 23.4742+-0.1777 23.4081+-0.1064 switch-string-length-tower 16.9856+-0.0619 ? 17.0097+-0.0859 ? switch-string-short 16.9697+-0.0550 16.8655+-0.1372 switch 20.1232+-2.3705 ? 21.1620+-0.3886 ? might be 1.0516x slower tear-off-arguments-simple 3.9004+-0.0201 ? 3.9143+-0.0485 ? tear-off-arguments 6.1397+-0.0420 6.1224+-0.0696 temporal-structure 20.7074+-0.3519 20.6839+-0.5234 to-int32-boolean 24.7980+-0.2476 24.6857+-0.1793 undefined-property-access 559.7302+-0.9276 559.0930+-0.7187 undefined-test 5.0421+-0.0884 ? 5.0533+-0.0491 ? unprofiled-licm 31.4230+-0.4654 31.2461+-0.6115 weird-inlining-const-prop 3.0376+-0.0964 3.0340+-0.0870 <arithmetic> 27.0357+-0.1150 ^ 26.8123+-0.0422 ^ definitely 1.0083x faster <geometric> * 12.5903+-0.0271 ^ 12.4363+-0.0153 ^ definitely 1.0124x faster <harmonic> 6.1900+-0.0135 ^ 6.1396+-0.0143 ^ definitely 1.0082x faster TipOfTree FixPolyCall AsmBench: bigfib.cpp 805.9876+-6.9381 800.5723+-3.9880 cray.c 805.3544+-23.0839 800.1622+-2.3662 dry.c 786.6480+-11.0617 ? 787.6781+-0.7275 ? FloatMM.c 1145.8517+-1.1145 1145.2922+-0.9563 gcc-loops.cpp 7038.9987+-12.7575 7029.1763+-10.3793 n-body.c 2026.4683+-5.6897 2023.2705+-2.9121 Quicksort.c 707.2682+-0.4682 ^ 705.9633+-0.7616 ^ definitely 1.0018x faster stepanov_container.cpp 5774.0280+-18.4893 ? 5780.0971+-33.2748 ? Towers.c 483.1687+-11.8870 ^ 468.7030+-2.0440 ^ definitely 1.0309x faster <arithmetic> 2174.8637+-4.5945 2171.2128+-4.5745 might be 1.0017x faster <geometric> * 1365.0641+-5.1374 ^ 1358.1061+-1.2796 ^ definitely 1.0051x faster <harmonic> 1008.9290+-5.9826 ^ 999.8683+-0.7743 ^ definitely 1.0091x faster TipOfTree FixPolyCall CompressionBench: huffman 723.0393+-11.8776 ? 723.0950+-10.2764 ? arithmetic-simple 687.3353+-1.1337 685.5412+-2.2894 arithmetic-precise 530.0193+-1.7648 526.4399+-3.3300 arithmetic-complex-precise 528.7227+-1.4596 ^ 524.4205+-2.0636 ^ definitely 1.0082x faster arithmetic-precise-order-0 753.3258+-8.4710 ? 761.9788+-7.3901 ? might be 1.0115x slower arithmetic-precise-order-1 565.1217+-5.4848 564.8609+-7.1305 arithmetic-precise-order-2 628.8137+-2.6847 ? 631.1237+-5.4744 ? arithmetic-simple-order-1 706.3149+-3.4002 ? 709.1667+-5.3332 ? arithmetic-simple-order-2 787.8340+-2.6070 ? 793.0290+-5.8016 ? lz-string 537.0835+-4.1636 529.8291+-3.6942 might be 1.0137x faster <arithmetic> 644.7610+-1.4807 ? 644.9485+-1.9503 ? might be 1.0003x slower <geometric> * 637.8047+-1.3499 637.4292+-1.8455 might be 1.0006x faster <harmonic> 630.8767+-1.2719 629.9395+-1.7510 might be 1.0015x faster TipOfTree FixPolyCall All benchmarks: <arithmetic> 164.2863+-0.1453 163.8808+-0.3137 might be 1.0025x faster <geometric> 21.2008+-0.0252 ^ 21.0147+-0.0331 ^ definitely 1.0089x faster <harmonic> 5.2630+-0.0140 ! 5.3427+-0.0563 ! definitely 1.0151x slower TipOfTree FixPolyCall Geomean of preferred means: <scaled-result> 105.7560+-0.1344 ^ 104.8999+-0.2376 ^ definitely 1.0082x faster
Filip Pizlo
Comment 8
2015-01-26 19:59:27 PST
The 13% richards slow-down is easy enough to reproduce with concurrent JIT enabled. It reproduces on two different machines (an old Mac Pro and a relatively new MacBook Pro). Oddly, if you disabled concurrent JIT, the results flip on the MBP. Not on the Mac Pro - disabling concurrent JIT still results in a slow-down on that machine.
Filip Pizlo
Comment 9
2015-01-26 20:03:40 PST
Super interesting: we still get a slow-down even with FTL JIT disabled. This suggests that this has nothing to do with poly inlining per se. The presence of the poly IC's appears to perturb performance of normal call sites. Reassuringly, if you disable the DFG JIT, then this becomes a speed-up. So this isn't about the poly IC itself being slow - it's actually a progression for baseline performance, which is what we would have hoped. What appears to be happening is that the profiling generated from the poly IC has lower fidelity even when the call is actually monomorphic.
Filip Pizlo
Comment 10
2015-01-26 20:35:03 PST
It seems that part of the slow down has to do with a polyvariant call not getting inlined when this patch is applied. Disabling polyvariant call inlining doesn't eliminate the slow-down; this is consistent with there still being a slow-down with FTL disabled.
Filip Pizlo
Comment 11
2015-01-27 12:01:41 PST
Found the issue. It's not a polyvariant call - it's actually a polymorphic call. In richards, there is a call to the task run method call that can go to one of 4 task run methods (IdleTask, DeviceTask, WorkerTask, or HandlerTask). The DeviceTask ends up being the most commonly called, but it's the last to be called. So with call edge profiling we detect that we should emit: if (callee = DeviceTask run) inline DeviceTask run else polymorphic call This ends up producing a healthy speed-up. But with the new polymorphic call inline caching, we see the first three device types to be called (IdleTask, WorkerTask, and HandlerTask) and then we see a very high slow path count because the DeviceTask is what we usually end up calling. This *might* be an example of why we want per-callee frequencies. But it might also just be a good reason to increase the number of callees we allow in the poly call IC. I'll mess with that.
Filip Pizlo
Comment 12
2015-01-27 12:43:29 PST
(In reply to
comment #11
)
> Found the issue. It's not a polyvariant call - it's actually a polymorphic > call. In richards, there is a call to the task run method call that can go > to one of 4 task run methods (IdleTask, DeviceTask, WorkerTask, or > HandlerTask). The DeviceTask ends up being the most commonly called, but > it's the last to be called. So with call edge profiling we detect that we > should emit: > > if (callee = DeviceTask run) > inline DeviceTask run > else > polymorphic call > > This ends up producing a healthy speed-up. But with the new polymorphic > call inline caching, we see the first three device types to be called > (IdleTask, WorkerTask, and HandlerTask) and then we see a very high slow > path count because the DeviceTask is what we usually end up calling. > > This *might* be an example of why we want per-callee frequencies. But it > might also just be a good reason to increase the number of callees we allow > in the poly call IC. I'll mess with that.
Setting the poly call IC size to 4 appears to fix it. I'm going to do a search over a variety of poly call IC sizes and see what effect it has on other programs.
Filip Pizlo
Comment 13
2015-01-27 14:29:06 PST
Ok - I'm on to something. I tried IC size limits 3, 4, and 5. 5 appears best, but 4 is almost as good. This removes the richards regression. But there is still a gbemu regression and SunSpider isn't really seeing a progression. I'll try to fix both of those issues.
Filip Pizlo
Comment 14
2015-01-27 15:02:01 PST
Created
attachment 245478
[details]
rebased Getting ready for the final bit of stuff
Filip Pizlo
Comment 15
2015-01-27 15:09:30 PST
I want to do two things: introduce fast path counts and allow the IC size to grow large, and mitigate the latter by using a binary switch instead of a linear branch chain.
Filip Pizlo
Comment 16
2015-01-27 19:01:31 PST
Created
attachment 245503
[details]
more refinements This introduces a binary switch and fast path counts. Haven't tried it yet.
Filip Pizlo
Comment 17
2015-01-28 11:45:20 PST
Created
attachment 245558
[details]
getting there This patch passes tests but is still a regression on gbemu. I believe that gbemu really wants one of its calls to be a normal virtual call rather than a cached polymorphic call. I'm going to experiment with making the polymorphic call machinery adapt to calls that are megamorphic.
Filip Pizlo
Comment 18
2015-01-28 20:32:39 PST
Created
attachment 245605
[details]
the patch Done!
WebKit Commit Bot
Comment 19
2015-01-28 20:34:31 PST
Attachment 245605
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ChangeLog:18: Line contains tab character. [whitespace/tab] [5] ERROR: Source/JavaScriptCore/ChangeLog:19: Line contains tab character. [whitespace/tab] [5] ERROR: Source/JavaScriptCore/ChangeLog:25: Line contains tab character. [whitespace/tab] [5] ERROR: Source/JavaScriptCore/ChangeLog:28: Line contains tab character. [whitespace/tab] [5] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1705: Missing space before { [whitespace/braces] [5] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1871: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1873: Use 'WTF::move()' instead of 'std::move()'. [runtime/wtf_move] [4] ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:168: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:63: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:63: Use 'WTF::move()' instead of 'std::move()'. [runtime/wtf_move] [4] Total errors found: 12 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 20
2015-01-28 20:35:14 PST
Created
attachment 245606
[details]
the patch And now, without tabs!
Filip Pizlo
Comment 21
2015-01-28 20:36:25 PST
Here's a large-sample-count run of SunSpider on my MBP, showing a speed-up on SunSpider: Benchmark report for SunSpider on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (
r179242
) "FixPolyCall" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (
r179242
) Collected 100 samples per benchmark/VM, with 100 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 FixPolyCall 3d-cube 4.8866+-0.0376 4.8543+-0.0329 3d-morph 6.1824+-0.0436 6.1446+-0.0255 3d-raytrace 6.5977+-0.1845 ? 6.6014+-0.1960 ? access-binary-trees 2.0885+-0.0399 ? 2.0977+-0.0381 ? access-fannkuch 5.8915+-0.0707 ? 5.9083+-0.1113 ? access-nbody 2.9811+-0.0979 2.9460+-0.0688 might be 1.0119x faster access-nsieve 3.6582+-0.0313 3.6398+-0.0432 bitops-3bit-bits-in-byte 1.5962+-0.0179 ? 1.6017+-0.0192 ? bitops-bits-in-byte 3.5769+-0.0389 3.5665+-0.0495 bitops-bitwise-and 2.1190+-0.0531 2.0994+-0.0409 bitops-nsieve-bits 3.7544+-0.0254 ? 3.7556+-0.0812 ? controlflow-recursive 2.2437+-0.0595 2.1926+-0.0300 might be 1.0233x faster crypto-aes 4.1764+-0.0714 ? 4.2196+-0.0923 ? might be 1.0103x slower crypto-md5 2.4286+-0.0490 2.4253+-0.0506 crypto-sha1 2.7617+-0.0580 2.6770+-0.0474 might be 1.0316x faster date-format-tofte 9.6993+-0.2640 9.4475+-0.1622 might be 1.0266x faster date-format-xparb 5.4870+-0.1100 5.2813+-0.1062 might be 1.0390x faster math-cordic 3.1769+-0.0844 3.1148+-0.0449 might be 1.0200x faster math-partial-sums 5.2267+-0.1075 5.1950+-0.0707 math-spectral-norm 2.0129+-0.0673 1.9388+-0.0321 might be 1.0382x faster regexp-dna 8.0691+-0.2355 7.9427+-0.2030 might be 1.0159x faster string-base64 4.5848+-0.1194 4.5166+-0.0832 might be 1.0151x faster string-fasta 6.5762+-0.0534 6.5541+-0.0689 string-tagcloud 10.1092+-0.0843 10.0951+-0.1729 string-unpack-code 20.6961+-0.1538 20.5455+-0.2921 string-validate-input 4.7125+-0.0752 4.6599+-0.0345 might be 1.0113x faster <arithmetic> * 5.2036+-0.0215 ^ 5.1547+-0.0197 ^ definitely 1.0095x faster <geometric> 4.2997+-0.0134 ^ 4.2611+-0.0117 ^ definitely 1.0091x faster <harmonic> 3.6758+-0.0109 ^ 3.6458+-0.0097 ^ definitely 1.0082x faster
Filip Pizlo
Comment 22
2015-01-28 20:36:48 PST
Here's a SunSpider, Octane, AsmBench run on my MBP (fewer samples): Benchmark report for SunSpider, Octane, and AsmBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (
r179242
) "FixPolyCall" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (
r179242
) 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 FixPolyCall SunSpider: 3d-cube 4.8197+-0.0372 ? 4.9838+-0.6028 ? might be 1.0340x slower 3d-morph 6.4103+-0.6248 6.0075+-0.0367 might be 1.0670x faster 3d-raytrace 6.3250+-0.0850 6.2930+-0.2369 access-binary-trees 2.0028+-0.0260 ? 2.0251+-0.0933 ? might be 1.0112x slower access-fannkuch 5.7402+-0.0383 ? 6.0172+-0.5350 ? might be 1.0482x slower access-nbody 2.8374+-0.0662 ? 2.8810+-0.1253 ? might be 1.0154x slower access-nsieve 3.5441+-0.0811 ? 3.6455+-0.0369 ? might be 1.0286x slower bitops-3bit-bits-in-byte 1.5651+-0.0455 ? 1.6098+-0.1236 ? might be 1.0286x slower bitops-bits-in-byte 3.5492+-0.1183 3.4893+-0.0326 might be 1.0172x faster bitops-bitwise-and 2.0168+-0.0639 ? 2.0762+-0.1334 ? might be 1.0294x slower bitops-nsieve-bits 3.7328+-0.2706 3.6347+-0.0286 might be 1.0270x faster controlflow-recursive 2.2379+-0.1940 ? 2.4342+-0.6340 ? might be 1.0877x slower crypto-aes 4.0303+-0.0771 3.9875+-0.0688 might be 1.0107x faster crypto-md5 2.4823+-0.2840 2.3923+-0.1226 might be 1.0376x faster crypto-sha1 2.5816+-0.1007 2.5734+-0.1213 date-format-tofte 9.4643+-0.2728 ? 10.7980+-3.1211 ? might be 1.1409x slower date-format-xparb 5.5444+-0.5303 ? 5.7240+-0.9754 ? might be 1.0324x slower math-cordic 3.0561+-0.0422 ? 3.0608+-0.0376 ? math-partial-sums 5.1626+-0.0902 5.0476+-0.0891 might be 1.0228x faster math-spectral-norm 1.8896+-0.0290 ? 2.0972+-0.5773 ? might be 1.1099x slower regexp-dna 7.7404+-1.3290 7.3598+-0.2031 might be 1.0517x faster string-base64 4.3940+-0.2608 4.2830+-0.0998 might be 1.0259x faster string-fasta 6.4015+-0.0859 ? 6.7855+-0.6364 ? might be 1.0600x slower string-tagcloud 10.1041+-0.3371 ? 10.3594+-0.6874 ? might be 1.0253x slower string-unpack-code 21.4417+-1.5241 20.4969+-1.5277 might be 1.0461x faster string-validate-input 4.6207+-0.1930 ? 4.6427+-0.1659 ? <arithmetic> * 5.1421+-0.0914 ? 5.1810+-0.1442 ? might be 1.0076x slower <geometric> 4.2193+-0.0456 ? 4.2613+-0.0784 ? might be 1.0100x slower <harmonic> 3.5988+-0.0313 ? 3.6415+-0.0694 ? might be 1.0118x slower TipOfTree FixPolyCall Octane: encrypt 0.24821+-0.03876 0.23258+-0.00301 might be 1.0672x faster decrypt 4.01782+-0.01861 ? 4.06039+-0.08587 ? might be 1.0106x slower deltablue x2 0.20643+-0.00522 0.20511+-0.00285 earley 0.72621+-0.08309 0.71169+-0.01280 might be 1.0204x faster boyer 5.50676+-0.31650 5.40778+-0.06060 might be 1.0183x faster navier-stokes x2 5.36930+-0.49714 5.18544+-0.04820 might be 1.0355x faster raytrace x2 1.31065+-0.03534 ? 1.31643+-0.04533 ? richards x2 0.13420+-0.00252 0.13415+-0.00153 splay x2 0.39231+-0.00931 0.38217+-0.00136 might be 1.0265x faster regexp x2 34.42388+-2.07032 34.42273+-0.59373 pdfjs x2 52.11575+-0.49626 ? 52.55593+-0.69477 ? mandreel x2 55.28892+-2.71486 53.79518+-0.27819 might be 1.0278x faster gbemu x2 44.72125+-0.77128 ? 47.06019+-2.34015 ? might be 1.0523x slower closure 0.56806+-0.00241 0.56651+-0.00691 jquery 8.20949+-1.43832 7.88236+-1.20685 might be 1.0415x faster box2d x2 13.40057+-0.08366 ? 13.53902+-0.16069 ? might be 1.0103x slower zlib x2 478.10385+-17.17574 ? 505.18743+-54.06191 ? might be 1.0566x slower typescript x2 867.49902+-13.16426 ? 919.75391+-116.79714 ? might be 1.0602x slower <arithmetic> 104.17363+-1.07316 ? 109.53122+-7.81338 ? might be 1.0514x slower <geometric> * 7.24684+-0.07389 ? 7.26045+-0.08612 ? might be 1.0019x slower <harmonic> 0.75519+-0.00824 0.74697+-0.00285 might be 1.0110x faster TipOfTree FixPolyCall AsmBench: bigfib.cpp 530.3802+-87.8702 501.4757+-4.4827 might be 1.0576x faster cray.c 470.5333+-5.6511 469.3772+-2.3721 dry.c 495.7466+-12.3185 493.5306+-10.6363 FloatMM.c 728.5669+-2.5297 ? 736.6958+-9.0387 ? might be 1.0112x slower gcc-loops.cpp 4173.6727+-9.7069 ? 4244.0462+-159.3924 ? might be 1.0169x slower n-body.c 997.3752+-6.2489 ? 1000.8542+-23.6847 ? Quicksort.c 451.1179+-18.8434 451.0982+-18.0806 stepanov_container.cpp 3602.4000+-22.0552 3593.6665+-17.3052 Towers.c 262.7042+-1.9439 ? 281.6958+-47.6332 ? might be 1.0723x slower <arithmetic> 1301.3886+-8.0324 ? 1308.0489+-21.5429 ? might be 1.0051x slower <geometric> * 815.0658+-13.8666 ? 818.2437+-16.1845 ? might be 1.0039x slower <harmonic> 600.9678+-10.6785 ? 606.5304+-23.3536 ? might be 1.0093x slower TipOfTree FixPolyCall All benchmarks: <arithmetic> 230.3292+-1.3863 ? 233.7397+-3.7608 ? might be 1.0148x slower <geometric> 11.2243+-0.0586 ? 11.2842+-0.0626 ? might be 1.0053x slower <harmonic> 1.3840+-0.0127 1.3737+-0.0068 might be 1.0075x faster TipOfTree FixPolyCall Geomean of preferred means: <scaled-result> 67.2149+-0.5190 ? 67.5088+-0.5563 ? might be 1.0044x slower
Filip Pizlo
Comment 23
2015-01-28 20:37:16 PST
Here's a run of all benchmarks on an older Mac Pro: Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (
r179242
) "FixPolyCall" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (
r179242
) 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 FixPolyCall SunSpider: 3d-cube 7.7431+-0.0613 7.6078+-0.1873 might be 1.0178x faster 3d-morph 9.7134+-0.0904 9.6610+-0.1086 3d-raytrace 9.9838+-0.2051 9.8059+-0.1622 might be 1.0181x faster access-binary-trees 3.1146+-0.0928 3.0540+-0.0779 might be 1.0199x faster access-fannkuch 9.9098+-0.1095 ? 10.1375+-0.3287 ? might be 1.0230x slower access-nbody 4.9222+-0.0513 4.9096+-0.0920 access-nsieve 5.5474+-0.1166 ? 5.5666+-0.1132 ? bitops-3bit-bits-in-byte 2.0453+-0.0301 ? 2.0477+-0.0310 ? bitops-bits-in-byte 6.9119+-0.1437 6.9077+-0.0892 bitops-bitwise-and 3.3750+-0.0152 3.3726+-0.0329 bitops-nsieve-bits 5.8400+-0.0423 ? 5.8576+-0.0461 ? controlflow-recursive 3.1855+-0.0522 ? 3.2242+-0.0247 ? might be 1.0121x slower crypto-aes 6.3446+-0.2069 ? 6.3929+-0.0552 ? crypto-md5 3.9052+-0.0548 3.8197+-0.1498 might be 1.0224x faster crypto-sha1 3.8910+-0.0717 3.8712+-0.0837 date-format-tofte 13.7430+-0.2134 ? 13.9942+-0.3587 ? might be 1.0183x slower date-format-xparb 8.3760+-0.1299 ? 8.3846+-0.3068 ? math-cordic 4.9564+-0.0722 4.9110+-0.0909 math-partial-sums 10.5095+-0.2157 ? 10.6978+-0.2103 ? might be 1.0179x slower math-spectral-norm 3.2673+-0.0650 ? 3.2719+-0.0696 ? regexp-dna 12.0131+-0.2420 ? 12.0291+-0.1901 ? string-base64 6.5761+-0.0455 ? 6.5859+-0.0351 ? string-fasta 10.2776+-0.0762 ? 10.3318+-0.1295 ? string-tagcloud 15.4904+-0.2454 15.4272+-0.3401 string-unpack-code 31.2062+-0.2590 ! 32.4849+-0.5851 ! definitely 1.0410x slower string-validate-input 7.4541+-0.0912 7.4288+-0.0370 <arithmetic> * 8.0886+-0.0263 ? 8.1455+-0.0311 ? might be 1.0070x slower <geometric> 6.7076+-0.0306 ? 6.7145+-0.0213 ? might be 1.0010x slower <harmonic> 5.6734+-0.0338 5.6643+-0.0244 might be 1.0016x faster TipOfTree FixPolyCall LongSpider: 3d-cube 1374.4176+-12.7866 1370.0026+-20.9700 3d-morph 2282.9271+-3.5690 ? 2287.3702+-14.9360 ? 3d-raytrace 1274.6424+-6.4620 ? 1286.4902+-30.3278 ? access-binary-trees 1627.0184+-15.6320 ? 1628.7638+-8.9347 ? access-fannkuch 538.1798+-11.7588 530.0782+-13.5937 might be 1.0153x faster access-nbody 1232.4153+-4.0531 1229.9505+-1.4659 access-nsieve 1532.0018+-3.8758 ? 1545.9462+-38.5735 ? bitops-3bit-bits-in-byte 57.0533+-0.2970 ? 57.2030+-0.3200 ? bitops-bits-in-byte 392.4292+-6.1271 387.8375+-4.5169 might be 1.0118x faster bitops-nsieve-bits 1148.3881+-6.4115 1144.3465+-4.8341 controlflow-recursive 886.5205+-1.3441 ? 886.8161+-1.3665 ? crypto-aes 1095.0660+-1.9928 ? 1103.0529+-6.2945 ? crypto-md5 953.2603+-10.5879 ? 954.5077+-1.7423 ? crypto-sha1 1158.5999+-9.0525 1153.4832+-4.4243 date-format-tofte 1209.8842+-14.9429 ? 1239.4604+-18.3103 ? might be 1.0244x slower date-format-xparb 1236.8608+-45.0332 1222.9519+-72.6632 might be 1.0114x faster math-cordic 820.5909+-1.0322 ? 857.9649+-83.4131 ? might be 1.0455x slower math-partial-sums 1311.3398+-3.1623 1309.8267+-3.6937 math-spectral-norm 1304.6534+-13.3148 1299.4845+-1.7255 string-base64 570.6387+-4.4966 ? 571.2506+-2.1206 ? string-fasta 695.2519+-2.9267 ? 696.1490+-3.0236 ? string-tagcloud 362.1212+-1.9623 ? 366.1341+-6.3042 ? might be 1.0111x slower <arithmetic> 1048.3755+-3.2786 ? 1051.3214+-6.9806 ? might be 1.0028x slower <geometric> * 876.4548+-2.4190 ? 878.6154+-6.0346 ? might be 1.0025x slower <harmonic> 534.9611+-1.6363 ? 536.0557+-2.7610 ? might be 1.0020x slower TipOfTree FixPolyCall V8Spider: crypto 82.8378+-1.1365 ? 83.0167+-1.0180 ? deltablue 122.4006+-1.1134 ^ 98.0278+-3.3151 ^ definitely 1.2486x faster earley-boyer 71.5969+-0.1246 ! 72.3028+-0.5213 ! definitely 1.0099x slower raytrace 46.0900+-0.8624 ^ 44.2883+-0.5730 ^ definitely 1.0407x faster regexp 115.8741+-0.8046 ? 116.6085+-1.0933 ? richards 114.4447+-2.9166 ^ 104.0122+-1.2366 ^ definitely 1.1003x faster splay 56.2960+-1.7855 55.3670+-2.5617 might be 1.0168x faster <arithmetic> 87.0772+-0.3895 ^ 81.9462+-0.6460 ^ definitely 1.0626x faster <geometric> * 82.0143+-0.4481 ^ 77.9436+-0.6134 ^ definitely 1.0522x faster <harmonic> 76.8731+-0.5533 ^ 73.7254+-0.6200 ^ definitely 1.0427x faster TipOfTree FixPolyCall Octane: encrypt 0.38660+-0.00506 0.38637+-0.00552 decrypt 6.94315+-0.21103 6.87493+-0.15471 deltablue x2 0.32203+-0.00685 0.32138+-0.00528 earley 1.22231+-0.00647 ? 1.24053+-0.01802 ? might be 1.0149x slower boyer 10.53766+-0.17992 ? 10.58220+-0.18963 ? navier-stokes x2 7.83037+-0.19437 ? 7.83939+-0.17682 ? raytrace x2 2.27615+-0.03651 2.24910+-0.03183 might be 1.0120x faster richards x2 0.20444+-0.00555 0.19952+-0.00054 might be 1.0247x faster splay x2 0.62316+-0.00672 0.62252+-0.00845 regexp x2 58.14070+-0.15416 ? 58.43748+-0.25022 ? pdfjs x2 84.44214+-2.15521 84.25630+-0.81482 mandreel x2 89.67196+-3.16487 88.35662+-0.29480 might be 1.0149x faster gbemu x2 76.10458+-1.45601 ! 78.57249+-0.83842 ! definitely 1.0324x slower closure 0.90053+-0.00420 ! 0.90639+-0.00099 ! definitely 1.0065x slower jquery 11.68140+-0.30185 ? 11.80463+-0.10170 ? might be 1.0105x slower box2d x2 23.08769+-0.21190 ? 23.40268+-0.62259 ? might be 1.0136x slower zlib x2 778.19476+-43.33999 ? 792.58366+-6.54982 ? might be 1.0185x slower typescript x2 1303.17761+-55.44990 1286.68213+-18.10337 might be 1.0128x faster <arithmetic> 162.66076+-1.45877 162.62805+-1.61621 might be 1.0002x faster <geometric> * 11.72610+-0.04746 ? 11.73906+-0.04694 ? might be 1.0011x slower <harmonic> 1.18205+-0.01458 1.17076+-0.00571 might be 1.0096x faster TipOfTree FixPolyCall Kraken: ai-astar 528.180+-1.389 ? 529.118+-0.664 ? audio-beat-detection 196.142+-4.532 ? 199.746+-3.955 ? might be 1.0184x slower audio-dft 253.224+-3.014 ? 256.755+-13.086 ? might be 1.0139x slower audio-fft 133.385+-1.527 132.329+-0.778 audio-oscillator 356.545+-0.796 356.356+-0.766 imaging-darkroom 287.724+-1.398 ? 288.111+-3.388 ? imaging-desaturate 112.953+-0.234 ? 113.889+-2.939 ? imaging-gaussian-blur 183.878+-0.628 ? 184.415+-3.481 ? json-parse-financial 83.813+-2.139 82.414+-0.559 might be 1.0170x faster json-stringify-tinderbox 100.826+-1.883 ? 102.970+-0.933 ? might be 1.0213x slower stanford-crypto-aes 100.375+-3.731 100.196+-1.165 stanford-crypto-ccm 93.216+-8.858 ? 94.284+-9.832 ? might be 1.0115x slower stanford-crypto-pbkdf2 277.476+-6.572 276.994+-2.584 stanford-crypto-sha256-iterative 107.448+-0.851 ? 108.038+-1.775 ? <arithmetic> * 201.085+-0.589 ? 201.830+-1.421 ? might be 1.0037x slower <geometric> 170.462+-1.410 ? 171.126+-1.667 ? might be 1.0039x slower <harmonic> 148.064+-2.254 ? 148.565+-2.110 ? might be 1.0034x slower TipOfTree FixPolyCall JSRegress: abs-boolean 4.3472+-0.0393 ? 4.4998+-0.2113 ? might be 1.0351x slower adapt-to-double-divide 20.5409+-0.2379 20.4342+-0.3717 aliased-arguments-getbyval 1.7630+-0.0400 ? 1.8052+-0.0254 ? might be 1.0239x slower allocate-big-object 3.9596+-0.1061 ? 4.0835+-0.1058 ? might be 1.0313x slower arity-mismatch-inlining 1.1994+-0.0255 ? 1.2054+-0.0348 ? array-access-polymorphic-structure 10.9436+-0.0574 ? 11.0904+-0.3211 ? might be 1.0134x slower array-nonarray-polymorhpic-access 57.9485+-0.4345 ? 59.6107+-3.1039 ? might be 1.0287x slower array-prototype-every 125.8075+-3.6432 ! 146.7563+-1.6053 ! definitely 1.1665x slower array-prototype-forEach 124.0273+-2.7556 ! 142.4324+-1.6292 ! definitely 1.1484x slower array-prototype-map 151.1400+-3.8483 ! 173.7982+-0.9184 ! definitely 1.1499x slower array-prototype-some 123.1647+-0.6726 ! 145.2794+-1.5977 ! definitely 1.1796x slower array-splice-contiguous 68.6637+-1.1688 68.1704+-0.5791 array-with-double-add 6.4715+-0.1306 ? 6.5418+-0.1592 ? might be 1.0109x slower array-with-double-increment 4.8363+-0.0642 4.8184+-0.0817 array-with-double-mul-add 8.3795+-0.1971 ? 8.4421+-0.1210 ? array-with-double-sum 5.1440+-0.0965 5.1290+-0.0471 array-with-int32-add-sub 11.3419+-0.2369 ? 11.3944+-0.2377 ? array-with-int32-or-double-sum 5.1804+-0.0523 ? 5.2124+-0.0604 ? ArrayBuffer-DataView-alloc-large-long-lived 57.4015+-1.5342 ? 59.3450+-2.3559 ? might be 1.0339x slower ArrayBuffer-DataView-alloc-long-lived 22.3796+-0.3986 ! 24.2474+-0.6756 ! definitely 1.0835x slower ArrayBuffer-Int32Array-byteOffset 5.6307+-0.0756 ? 5.6878+-0.0346 ? might be 1.0101x slower ArrayBuffer-Int8Array-alloc-large-long-lived 62.5754+-3.0025 ? 63.0499+-1.1020 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 37.8843+-0.8595 ! 40.7436+-1.6740 ! definitely 1.0755x slower ArrayBuffer-Int8Array-alloc-long-lived 21.5275+-0.3219 ! 23.0908+-0.6299 ! definitely 1.0726x slower ArrayBuffer-Int8Array-alloc 18.6761+-0.3352 ! 20.3300+-0.6417 ! definitely 1.0886x slower asmjs_bool_bug 10.2980+-0.2024 ? 10.4688+-0.2092 ? might be 1.0166x slower assign-custom-setter-polymorphic 4.8110+-0.0185 ? 5.0101+-0.2941 ? might be 1.0414x slower assign-custom-setter 6.7861+-0.2700 6.7684+-0.2407 basic-set 15.5647+-0.2726 ? 15.8498+-0.2689 ? might be 1.0183x slower big-int-mul 6.7995+-0.0484 ? 6.8053+-0.2036 ? boolean-test 5.0341+-0.0705 4.9993+-0.0559 branch-fold 5.4204+-0.0492 ? 5.4421+-0.0754 ? by-val-generic 12.7389+-0.3446 12.6557+-0.3160 call-spread-apply 20.8071+-0.2530 ? 21.0218+-0.3777 ? might be 1.0103x slower call-spread-call 8.9637+-0.1108 8.8973+-0.1781 captured-assignments 0.6314+-0.0072 ? 0.6431+-0.0083 ? might be 1.0185x slower cast-int-to-double 9.4862+-0.1542 ? 9.6041+-0.1293 ? might be 1.0124x slower cell-argument 11.0897+-0.1723 ? 11.2362+-0.2438 ? might be 1.0132x slower cfg-simplify 4.3013+-0.0226 ? 4.3023+-0.0411 ? chain-getter-access 13.8110+-0.1947 ? 13.9080+-0.2074 ? cmpeq-obj-to-obj-other 13.8167+-0.2586 ? 14.0962+-0.3048 ? might be 1.0202x slower constant-test 9.0841+-0.1192 9.0122+-0.0486 DataView-custom-properties 64.1408+-2.0208 ! 70.2617+-1.4871 ! definitely 1.0954x slower delay-tear-off-arguments-strictmode 3.8832+-0.0462 ? 3.8944+-0.0488 ? destructuring-arguments 9.1615+-0.0849 9.0510+-0.1593 might be 1.0122x faster destructuring-swap 9.2425+-0.0979 9.1685+-0.2009 direct-arguments-getbyval 1.0373+-0.0142 ? 1.0507+-0.0146 ? might be 1.0129x slower div-boolean-double 6.5591+-0.0750 ? 6.5722+-0.0679 ? div-boolean 11.6874+-0.1388 11.6134+-0.1582 double-get-by-val-out-of-bounds 6.7202+-0.1096 ? 6.8459+-0.1394 ? might be 1.0187x slower double-pollution-getbyval 11.5002+-0.2181 ? 11.5086+-0.2034 ? double-pollution-putbyoffset 6.2913+-0.1810 ? 6.3912+-0.1551 ? might be 1.0159x slower double-to-int32-typed-array-no-inline 3.2243+-0.0319 ? 3.2272+-0.0542 ? double-to-int32-typed-array 2.8384+-0.0706 2.8046+-0.0627 might be 1.0121x faster double-to-uint32-typed-array-no-inline 3.3144+-0.0814 ? 3.3680+-0.1028 ? might be 1.0162x slower double-to-uint32-typed-array 2.9898+-0.0698 2.9674+-0.0692 elidable-new-object-dag 63.8998+-1.4894 63.3593+-0.6021 elidable-new-object-roflcopter 244.1246+-1.6831 243.5238+-2.4515 elidable-new-object-then-call 57.9811+-1.2739 57.6588+-0.5420 elidable-new-object-tree 70.1278+-1.1543 ? 70.6317+-0.7282 ? empty-string-plus-int 8.5554+-0.1358 ! 8.8743+-0.1492 ! definitely 1.0373x slower emscripten-cube2hash 53.7476+-0.8138 53.3005+-0.6383 external-arguments-getbyval 2.1479+-0.0474 ! 2.2213+-0.0242 ! definitely 1.0342x slower external-arguments-putbyval 3.3895+-0.0204 3.2999+-0.0729 might be 1.0271x faster fixed-typed-array-storage-var-index 1.6397+-0.0389 1.6272+-0.0064 fixed-typed-array-storage 1.2459+-0.0577 1.2301+-0.0267 might be 1.0128x faster Float32Array-matrix-mult 6.7474+-0.0554 ? 6.9147+-0.3922 ? might be 1.0248x slower Float32Array-to-Float64Array-set 92.5581+-0.5212 ^ 89.9178+-1.4837 ^ definitely 1.0294x faster Float64Array-alloc-long-lived 103.5635+-1.7044 101.9898+-1.1035 might be 1.0154x faster Float64Array-to-Int16Array-set 112.2249+-0.7159 ? 112.3964+-1.2198 ? fold-double-to-int 20.3447+-0.3990 ? 20.3851+-0.1462 ? fold-get-by-id-to-multi-get-by-offset-rare-int 24.5426+-0.1289 ^ 12.3510+-0.2910 ^ definitely 1.9871x faster fold-get-by-id-to-multi-get-by-offset 23.2840+-0.4085 ^ 11.0652+-0.2909 ^ definitely 2.1043x faster fold-multi-get-by-offset-to-get-by-offset 17.6646+-0.4747 ^ 10.5139+-1.6353 ^ definitely 1.6801x faster fold-multi-get-by-offset-to-poly-get-by-offset 17.8997+-0.4430 ^ 10.7834+-0.6866 ^ definitely 1.6599x faster fold-multi-put-by-offset-to-poly-put-by-offset 16.9428+-0.2338 ^ 9.2050+-0.5001 ^ definitely 1.8406x faster fold-multi-put-by-offset-to-put-by-offset 15.8894+-0.1560 ^ 7.5765+-0.5975 ^ definitely 2.0972x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 22.4945+-0.1286 ^ 15.0210+-1.3938 ^ definitely 1.4975x faster fold-put-by-id-to-multi-put-by-offset 23.9040+-0.3779 ^ 11.2602+-0.9230 ^ definitely 2.1229x faster fold-put-structure 16.7803+-0.5084 ^ 7.9063+-0.5863 ^ definitely 2.1224x faster for-of-iterate-array-entries 8.6227+-0.3015 ? 8.6943+-0.2137 ? for-of-iterate-array-keys 3.9689+-0.0991 ? 4.0623+-0.0984 ? might be 1.0235x slower for-of-iterate-array-values 3.4840+-0.0826 ? 3.5066+-0.0872 ? fround 23.7209+-0.2487 23.6256+-0.2147 ftl-library-inlining-dataview 106.3356+-2.7316 ? 107.2389+-5.3141 ? ftl-library-inlining 128.4596+-17.4214 ? 142.9221+-0.2203 ? might be 1.1126x slower function-dot-apply 2.5901+-0.0447 ? 2.6113+-0.0366 ? function-test 5.4725+-0.1111 5.4388+-0.0920 function-with-eval 181.7540+-0.5742 180.9929+-1.0972 gcse-poly-get-less-obvious 29.1089+-0.4746 ? 29.6518+-0.3851 ? might be 1.0187x slower gcse-poly-get 29.7091+-0.1294 ? 29.9956+-0.7462 ? gcse 7.6549+-0.1188 7.5594+-0.1684 might be 1.0126x faster get-by-id-bimorphic-check-structure-elimination-simple 3.9093+-0.0436 ? 3.9123+-0.0865 ? get-by-id-bimorphic-check-structure-elimination 9.8397+-0.2734 ? 9.8498+-0.1012 ? get-by-id-chain-from-try-block 19.5870+-0.2454 19.4104+-0.1819 get-by-id-check-structure-elimination 8.9693+-0.1599 8.7669+-0.1783 might be 1.0231x faster get-by-id-proto-or-self 25.8743+-2.4313 24.9679+-1.1596 might be 1.0363x faster get-by-id-quadmorphic-check-structure-elimination-simple 4.6613+-0.0528 4.6513+-0.0755 get-by-id-self-or-proto 25.4169+-0.7213 25.3053+-1.6580 get-by-val-out-of-bounds 6.8379+-0.2359 ? 7.2094+-0.4222 ? might be 1.0543x slower get_callee_monomorphic 5.8807+-0.1072 ? 5.9951+-0.1497 ? might be 1.0195x slower get_callee_polymorphic 5.1165+-0.1087 ? 5.1418+-0.1249 ? getter-no-activation 6.8623+-0.0480 ? 6.9453+-0.0607 ? might be 1.0121x slower getter-richards 163.6601+-8.7209 151.0332+-4.0713 might be 1.0836x faster getter 7.8403+-0.2371 7.6878+-0.1701 might be 1.0198x faster global-var-const-infer-fire-from-opt 1.3392+-0.0688 ? 1.3412+-0.1246 ? global-var-const-infer 1.2929+-0.0472 1.2873+-0.0415 HashMap-put-get-iterate-keys 40.9592+-0.4455 ? 41.0598+-0.3746 ? HashMap-put-get-iterate 40.4697+-0.5826 40.3741+-0.5479 HashMap-string-put-get-iterate 40.1143+-2.2264 39.8031+-0.3401 hoist-make-rope 14.0476+-1.0652 13.7897+-0.9542 might be 1.0187x faster hoist-poly-check-structure-effectful-loop 8.0020+-0.1547 ? 8.0597+-0.1512 ? hoist-poly-check-structure 5.7042+-0.0480 5.6742+-0.0667 imul-double-only 10.0771+-0.3462 ? 10.1142+-0.2501 ? imul-int-only 13.1656+-0.4187 12.8553+-0.5091 might be 1.0241x faster imul-mixed 9.6145+-0.5832 ? 10.1410+-0.5252 ? might be 1.0548x slower in-four-cases 28.6674+-0.1880 ? 28.7503+-0.0981 ? in-one-case-false 14.8816+-0.2234 ? 14.9885+-0.0829 ? in-one-case-true 14.8643+-0.0924 ? 14.9337+-0.2184 ? in-two-cases 15.5200+-0.1244 ? 15.6124+-0.1464 ? indexed-properties-in-objects 4.3986+-0.0595 ? 4.3992+-0.0760 ? infer-closure-const-then-mov-no-inline 5.2253+-0.0231 5.1587+-0.1135 might be 1.0129x faster infer-closure-const-then-mov 29.4488+-0.0474 ? 29.6029+-0.1386 ? infer-closure-const-then-put-to-scope-no-inline 17.6587+-0.1570 ? 17.7229+-0.3379 ? infer-closure-const-then-put-to-scope 35.8828+-0.5366 35.6579+-0.1111 infer-closure-const-then-reenter-no-inline 81.0774+-0.1201 ? 81.1822+-0.1174 ? infer-closure-const-then-reenter 34.6437+-0.2010 34.6389+-0.2467 infer-constant-global-property 5.5492+-0.0221 ? 5.5999+-0.0556 ? infer-constant-property 3.8892+-0.0567 3.8728+-0.0531 infer-one-time-closure-ten-vars 16.7299+-0.1695 ? 16.8703+-0.1652 ? infer-one-time-closure-two-vars 15.9514+-0.1502 15.7939+-0.2704 infer-one-time-closure 15.7604+-0.3001 ? 15.9677+-0.0983 ? might be 1.0132x slower infer-one-time-deep-closure 28.5570+-0.1734 28.4137+-0.1586 inline-arguments-access 2.4738+-0.0322 2.4677+-0.0303 inline-arguments-aliased-access 2.8352+-0.0075 2.8005+-0.0515 might be 1.0124x faster inline-arguments-local-escape 21.8341+-0.2238 ? 22.1306+-0.1697 ? might be 1.0136x slower inline-get-scoped-var 6.6786+-0.1361 ? 6.7233+-0.1456 ? inlined-put-by-id-transition 18.4785+-0.2834 17.7625+-0.7768 might be 1.0403x faster int-or-other-abs-then-get-by-val 8.1552+-0.1561 8.0565+-0.1175 might be 1.0122x faster int-or-other-abs-zero-then-get-by-val 30.6173+-0.2326 ? 30.8746+-0.5417 ? int-or-other-add-then-get-by-val 6.9277+-0.1686 ? 7.0263+-0.1478 ? might be 1.0142x slower int-or-other-add 9.2705+-0.1454 ? 9.3211+-0.1128 ? int-or-other-div-then-get-by-val 6.1370+-0.0738 6.1005+-0.1296 int-or-other-max-then-get-by-val 7.4832+-0.1894 ? 7.5845+-0.2465 ? might be 1.0135x slower int-or-other-min-then-get-by-val 6.2349+-0.0844 ? 6.2472+-0.0803 ? int-or-other-mod-then-get-by-val 5.9661+-0.1549 ? 6.0859+-0.0502 ? might be 1.0201x slower int-or-other-mul-then-get-by-val 5.9008+-0.1245 ? 5.9507+-0.1448 ? int-or-other-neg-then-get-by-val 7.3807+-0.1597 ? 7.3897+-0.0870 ? int-or-other-neg-zero-then-get-by-val 30.9039+-0.7138 30.6108+-0.2211 int-or-other-sub-then-get-by-val 6.9970+-0.0936 6.9847+-0.1019 int-or-other-sub 6.0735+-0.0513 ? 6.0960+-0.0730 ? int-overflow-local 6.8700+-0.0694 6.8273+-0.0728 Int16Array-alloc-long-lived 73.7884+-1.5848 73.2537+-1.0115 Int16Array-bubble-sort-with-byteLength 43.7412+-0.0426 43.5420+-0.2596 Int16Array-bubble-sort 43.2946+-1.9388 42.5194+-0.2127 might be 1.0182x faster Int16Array-load-int-mul 2.2039+-0.0405 ? 2.2463+-0.0441 ? might be 1.0192x slower Int16Array-to-Int32Array-set 82.6978+-1.3404 ? 83.6757+-1.5284 ? might be 1.0118x slower Int32Array-alloc-large 42.6249+-0.9592 ? 42.6949+-1.7607 ? Int32Array-alloc-long-lived 80.9175+-0.6305 80.7850+-1.0012 Int32Array-alloc 4.8780+-0.1095 ? 4.9430+-0.0605 ? might be 1.0133x slower Int32Array-Int8Array-view-alloc 11.4331+-0.1068 ! 12.2927+-0.2256 ! definitely 1.0752x slower int52-spill 10.0249+-0.0520 ? 10.1704+-0.2367 ? might be 1.0145x slower Int8Array-alloc-long-lived 66.8451+-0.5106 ? 66.9681+-0.4506 ? Int8Array-load-with-byteLength 5.6129+-0.0492 5.5898+-0.0597 Int8Array-load 5.5825+-0.0592 ? 5.6357+-0.0538 ? integer-divide 17.1477+-0.1326 17.0951+-0.0380 integer-modulo 3.0382+-0.0366 3.0072+-0.0538 might be 1.0103x faster large-int-captured 13.1444+-0.0717 13.1287+-0.3447 large-int-neg 23.9643+-0.5267 ? 24.0327+-0.4878 ? large-int 21.8397+-0.2974 21.6537+-0.3080 logical-not 7.6494+-0.2964 ? 7.7212+-0.2477 ? lots-of-fields 18.3398+-0.2845 ? 18.3975+-0.2129 ? make-indexed-storage 4.6823+-0.1155 ? 4.8034+-0.1243 ? might be 1.0259x slower make-rope-cse 6.2931+-0.1679 ? 6.4735+-0.4205 ? might be 1.0287x slower marsaglia-larger-ints 64.3240+-0.5589 ? 64.4481+-0.7294 ? marsaglia-osr-entry 31.3440+-0.7265 ? 31.4425+-0.3234 ? max-boolean 3.8555+-0.0499 ? 3.9737+-0.1993 ? might be 1.0307x slower method-on-number 28.7893+-0.8798 27.8940+-0.4873 might be 1.0321x faster min-boolean 3.8103+-0.0421 ? 3.8463+-0.0631 ? minus-boolean-double 4.9498+-0.0390 ? 4.9578+-0.0369 ? minus-boolean 3.8210+-0.0893 3.8003+-0.0457 misc-strict-eq 60.2197+-11.8673 56.2010+-0.6960 might be 1.0715x faster mod-boolean-double 13.8989+-0.1462 ? 13.9332+-0.1526 ? mod-boolean 10.5380+-0.1635 10.5100+-0.1500 mul-boolean-double 5.7339+-0.0518 5.7002+-0.1380 mul-boolean 4.1059+-0.0425 ? 4.1393+-0.0254 ? neg-boolean 5.0192+-0.0425 ? 5.0222+-0.0250 ? negative-zero-divide 0.4617+-0.0074 ? 0.4659+-0.0039 ? negative-zero-modulo 0.4643+-0.0054 ? 0.4665+-0.0027 ? negative-zero-negate 0.4328+-0.0064 ? 0.4426+-0.0062 ? might be 1.0226x slower nested-function-parsing 39.8116+-0.4351 38.6211+-0.8223 might be 1.0308x faster new-array-buffer-dead 4.3975+-0.0998 4.3805+-0.1127 new-array-buffer-push 10.8094+-0.2426 10.7107+-0.1853 new-array-dead 14.8610+-0.2176 14.6556+-0.2601 might be 1.0140x faster new-array-push 7.4779+-0.3515 7.3801+-0.2083 might be 1.0132x faster number-test 4.8671+-0.0346 ? 4.8938+-0.0445 ? object-closure-call 8.9688+-0.1238 ? 8.9757+-0.1293 ? object-test 5.1766+-0.0615 ? 5.2937+-0.1052 ? might be 1.0226x slower obvious-sink-pathology-taken 206.9022+-2.2729 ? 209.9453+-2.4941 ? might be 1.0147x slower obvious-sink-pathology 195.8888+-2.0261 ? 199.4840+-3.5559 ? might be 1.0184x slower obviously-elidable-new-object 51.5020+-1.1499 ? 51.9724+-1.3882 ? plus-boolean-arith 3.8365+-0.0418 ? 3.8530+-0.0613 ? plus-boolean-double 4.9637+-0.0464 ? 5.0070+-0.0194 ? plus-boolean 3.7435+-0.0426 3.7375+-0.0523 poly-chain-access-different-prototypes-simple 4.5566+-0.0557 ? 4.6199+-0.0381 ? might be 1.0139x slower poly-chain-access-different-prototypes 3.0354+-0.0914 ? 3.1280+-0.3025 ? might be 1.0305x slower poly-chain-access-simpler 4.5218+-0.0745 ? 4.5529+-0.0696 ? poly-chain-access 2.9218+-0.0188 ? 3.1248+-0.3186 ? might be 1.0695x slower poly-stricteq 85.5696+-0.3393 85.5165+-0.2905 polymorphic-array-call 2.3422+-0.0630 ? 2.3644+-0.0285 ? polymorphic-get-by-id 4.9021+-0.0502 ? 4.9279+-0.0487 ? polymorphic-put-by-id 45.0473+-3.6918 ? 45.3674+-1.4568 ? polymorphic-structure 29.8420+-0.3768 29.7926+-0.2445 polyvariant-monomorphic-get-by-id 12.9873+-0.3139 ? 13.0556+-0.3654 ? proto-getter-access 14.0427+-0.3021 13.9965+-0.1277 put-by-id-replace-and-transition 12.9687+-0.2833 12.9395+-0.2227 put-by-id-slightly-polymorphic 4.1800+-0.0441 4.1602+-0.0488 put-by-id 21.0468+-0.4665 ? 21.2009+-0.4680 ? put-by-val-direct 0.8373+-0.0105 0.8325+-0.0050 put-by-val-large-index-blank-indexing-type 10.0974+-0.2479 9.9545+-0.3082 might be 1.0143x faster put-by-val-machine-int 4.3242+-0.1422 4.2310+-0.2150 might be 1.0220x faster rare-osr-exit-on-local 21.9405+-0.1759 21.5299+-0.7719 might be 1.0191x faster register-pressure-from-osr 32.2351+-0.3857 31.9899+-0.1414 setter 7.7150+-0.1643 ? 7.7475+-0.1924 ? simple-activation-demo 39.2698+-0.1748 ? 39.2871+-0.1365 ? simple-getter-access 19.9213+-0.2453 19.8409+-0.2640 simple-poly-call-nested 22.5692+-0.2577 ^ 11.3383+-0.1577 ^ definitely 1.9905x faster simple-poly-call 1.7791+-0.0100 ^ 1.7402+-0.0216 ^ definitely 1.0223x faster sin-boolean 24.1276+-0.7492 23.5147+-0.4069 might be 1.0261x faster sinkable-new-object-dag 95.9856+-2.3565 95.2555+-1.2453 sinkable-new-object-taken 78.4886+-0.3070 ? 79.1586+-1.1438 ? sinkable-new-object 55.0026+-1.0377 ? 56.1707+-3.2494 ? might be 1.0212x slower slow-array-profile-convergence 4.3970+-0.1459 4.3807+-0.1248 slow-convergence 5.0880+-0.0537 ? 5.1067+-0.1050 ? sparse-conditional 1.7146+-0.0435 ? 1.7634+-0.1100 ? might be 1.0285x slower splice-to-remove 27.7640+-0.1504 27.5532+-0.4976 string-char-code-at 23.5731+-0.1608 ? 23.6212+-0.1126 ? string-concat-object 3.2631+-0.0924 3.2587+-0.0826 string-concat-pair-object 3.1648+-0.1759 3.1549+-0.0331 string-concat-pair-simple 18.2897+-0.4822 ? 18.3336+-0.3986 ? string-concat-simple 18.6144+-0.4285 ? 18.8547+-0.4067 ? might be 1.0129x slower string-cons-repeat 11.9548+-0.0524 ? 12.0766+-0.1155 ? might be 1.0102x slower string-cons-tower 11.0198+-0.0554 ? 11.1592+-0.1908 ? might be 1.0127x slower string-equality 26.7115+-0.5686 26.3701+-0.2054 might be 1.0129x faster string-get-by-val-big-char 11.8064+-0.3169 ! 12.5473+-0.2081 ! definitely 1.0628x slower string-get-by-val-out-of-bounds-insane 6.6931+-0.1303 6.6220+-0.1753 might be 1.0107x faster string-get-by-val-out-of-bounds 8.0543+-0.3164 8.0090+-0.1869 string-get-by-val 5.6907+-0.0255 5.6717+-0.0440 string-hash 3.0720+-0.0644 ? 3.0821+-0.0601 ? string-long-ident-equality 21.5580+-0.1906 ? 21.5872+-0.1910 ? string-repeat-arith 49.2934+-0.5730 ? 49.3681+-0.6784 ? string-sub 95.5723+-0.9011 ? 97.4448+-1.4576 ? might be 1.0196x slower string-test 4.8590+-0.0745 ? 4.9137+-0.0458 ? might be 1.0113x slower string-var-equality 52.4305+-0.4248 ? 52.4655+-0.4735 ? structure-hoist-over-transitions 3.8220+-0.0421 ? 3.8468+-0.0939 ? substring-concat-weird 62.7062+-0.3840 ! 63.7391+-0.6251 ! definitely 1.0165x slower substring-concat 66.4360+-0.4295 ? 67.0146+-1.0875 ? substring 75.8142+-0.8509 ? 76.0374+-0.2187 ? switch-char-constant 3.9180+-0.0691 3.9145+-0.0431 switch-char 9.3968+-0.1262 9.3870+-0.1186 switch-constant 16.3839+-1.6327 15.6190+-2.1479 might be 1.0490x faster switch-string-basic-big-var 25.9536+-1.5609 25.1650+-1.9630 might be 1.0313x faster switch-string-basic-big 25.7962+-1.1930 ? 26.3020+-3.1272 ? might be 1.0196x slower switch-string-basic-var 34.5800+-1.6242 ? 35.1563+-1.9271 ? might be 1.0167x slower switch-string-basic 27.5215+-0.6448 ? 27.7345+-0.3099 ? switch-string-big-length-tower-var 29.9933+-0.2222 ? 30.2907+-0.6778 ? switch-string-length-tower-var 23.7891+-0.5660 23.7535+-0.8447 switch-string-length-tower 17.0098+-0.0678 ? 17.0283+-0.1025 ? switch-string-short 17.0376+-0.1609 ? 17.0702+-0.1649 ? switch 18.5686+-3.1825 ? 19.7286+-3.0320 ? might be 1.0625x slower tear-off-arguments-simple 3.8773+-0.0498 ? 3.8960+-0.0337 ? tear-off-arguments 6.0628+-0.0909 ? 6.1207+-0.0403 ? temporal-structure 20.6108+-0.5045 20.4831+-0.1218 to-int32-boolean 25.2767+-0.5445 24.8662+-0.4313 might be 1.0165x faster undefined-property-access 558.3659+-0.7923 ? 559.8681+-0.9548 ? undefined-test 5.0676+-0.0650 ? 5.0821+-0.0391 ? unprofiled-licm 31.4823+-0.3637 31.1967+-0.5602 weird-inlining-const-prop 3.0217+-0.0979 2.9689+-0.1542 might be 1.0178x faster <arithmetic> 26.7797+-0.0566 ? 26.8319+-0.0498 ? might be 1.0019x slower <geometric> * 12.3680+-0.0203 ^ 12.1640+-0.0204 ^ definitely 1.0168x faster <harmonic> 6.0419+-0.0122 ^ 6.0168+-0.0083 ^ definitely 1.0042x faster TipOfTree FixPolyCall AsmBench: bigfib.cpp 805.4345+-5.1748 799.2900+-4.2405 cray.c 794.8741+-3.0957 ! 800.3571+-1.8107 ! definitely 1.0069x slower dry.c 787.4051+-13.0942 787.2689+-21.7158 FloatMM.c 1146.3075+-0.5622 1145.6097+-1.1621 gcc-loops.cpp 7033.9452+-10.0536 ? 7047.0699+-15.4229 ? n-body.c 2027.0303+-7.3026 2025.3682+-4.3534 Quicksort.c 702.5670+-2.1375 ? 702.7419+-5.7202 ? stepanov_container.cpp 5813.1728+-69.0546 5782.6385+-15.3021 Towers.c 469.1574+-1.5392 ! 474.9974+-2.9617 ! definitely 1.0124x slower <arithmetic> 2175.5438+-7.2932 2173.9268+-2.5388 might be 1.0007x faster <geometric> * 1358.7397+-2.0738 ? 1359.7553+-5.2654 ? might be 1.0007x slower <harmonic> 999.4826+-2.8460 ? 1002.0937+-5.4217 ? might be 1.0026x slower TipOfTree FixPolyCall CompressionBench: huffman 718.9412+-8.9648 ? 721.8475+-2.4491 ? arithmetic-simple 687.3184+-2.3016 ? 687.4087+-2.5082 ? arithmetic-precise 525.7948+-3.4266 ? 529.7552+-14.2001 ? arithmetic-complex-precise 525.7145+-5.0058 523.1427+-1.8896 arithmetic-precise-order-0 755.0008+-18.7412 ? 764.0262+-4.7342 ? might be 1.0120x slower arithmetic-precise-order-1 559.7933+-2.9261 ? 563.4202+-5.2493 ? arithmetic-precise-order-2 624.5126+-3.3595 ? 634.7485+-11.7355 ? might be 1.0164x slower arithmetic-simple-order-1 706.9583+-2.7381 ? 712.5033+-12.2267 ? arithmetic-simple-order-2 791.9235+-8.1264 789.9486+-4.8329 lz-string 526.4965+-7.3729 ? 542.0887+-12.9866 ? might be 1.0296x slower <arithmetic> 642.2454+-3.0335 ? 646.8889+-2.3550 ? might be 1.0072x slower <geometric> * 634.7794+-2.7807 ? 639.5922+-2.3510 ? might be 1.0076x slower <harmonic> 627.3571+-2.5601 ! 632.3072+-2.3667 ! definitely 1.0079x slower TipOfTree FixPolyCall All benchmarks: <arithmetic> 164.2076+-0.1480 ? 164.4253+-0.3087 ? might be 1.0013x slower <geometric> 20.9061+-0.0260 ^ 20.6579+-0.0291 ^ definitely 1.0120x faster <harmonic> 5.1949+-0.0213 ^ 5.1647+-0.0061 ^ definitely 1.0058x faster TipOfTree FixPolyCall Geomean of preferred means: <scaled-result> 104.8656+-0.1221 ^ 104.2773+-0.1201 ^ definitely 1.0056x faster
WebKit Commit Bot
Comment 24
2015-01-28 20:37:44 PST
Attachment 245606
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1705: Missing space before { [whitespace/braces] [5] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1871: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1873: Use 'WTF::move()' instead of 'std::move()'. [runtime/wtf_move] [4] ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:168: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:63: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:63: Use 'WTF::move()' instead of 'std::move()'. [runtime/wtf_move] [4] Total errors found: 8 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 25
2015-01-28 20:38:14 PST
Here's a high-sample-count run of SunSpider on my Mac Pro. Notice that this reports a slow-down where my MBP reported a speed-up. I believe that the MBP is more representative, also the MBP's speed-up is larger than the Mac Pro's slow-down. Benchmark report for SunSpider on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (
r179242
) "FixPolyCall" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (
r179242
) Collected 100 samples per benchmark/VM, with 100 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 FixPolyCall 3d-cube 7.7170+-0.0340 ? 7.7181+-0.0326 ? 3d-morph 9.7831+-0.0261 9.7388+-0.0354 3d-raytrace 10.0348+-0.0471 9.9964+-0.0382 access-binary-trees 3.0732+-0.0189 ? 3.1182+-0.0287 ? might be 1.0146x slower access-fannkuch 10.0455+-0.0322 ? 10.0678+-0.0339 ? access-nbody 4.9420+-0.0142 ? 4.9446+-0.0179 ? access-nsieve 5.5936+-0.0206 ? 5.6146+-0.0213 ? bitops-3bit-bits-in-byte 2.0516+-0.0085 ! 2.0834+-0.0221 ! definitely 1.0155x slower bitops-bits-in-byte 6.9174+-0.0234 ? 6.9257+-0.0283 ? bitops-bitwise-and 3.3669+-0.0034 ? 3.3755+-0.0090 ? bitops-nsieve-bits 5.8508+-0.0123 ? 5.8626+-0.0150 ? controlflow-recursive 3.2179+-0.0180 ? 3.2433+-0.0265 ? crypto-aes 6.3771+-0.0258 ! 6.4364+-0.0283 ! definitely 1.0093x slower crypto-md5 3.8777+-0.0236 ? 3.9033+-0.0194 ? crypto-sha1 3.9060+-0.0268 3.8842+-0.0198 date-format-tofte 13.8654+-0.0652 ! 14.0650+-0.0663 ! definitely 1.0144x slower date-format-xparb 8.4498+-0.0353 ^ 8.2310+-0.0455 ^ definitely 1.0266x faster math-cordic 4.9779+-0.0240 4.9636+-0.0154 math-partial-sums 10.5462+-0.0322 ? 10.5859+-0.0363 ? math-spectral-norm 3.2844+-0.0135 ? 3.2957+-0.0113 ? regexp-dna 11.9974+-0.0444 11.9734+-0.0456 string-base64 6.5849+-0.0187 ? 6.6124+-0.0181 ? string-fasta 10.3796+-0.0540 10.3683+-0.0414 string-tagcloud 15.4755+-0.0611 15.4274+-0.0524 string-unpack-code 31.3835+-0.1273 ! 32.3859+-0.1398 ! definitely 1.0319x slower string-validate-input 7.4339+-0.0281 ? 7.4824+-0.0320 ? <arithmetic> * 8.1205+-0.0082 ! 8.1655+-0.0083 ! definitely 1.0055x slower <geometric> 6.7273+-0.0053 ! 6.7478+-0.0062 ! definitely 1.0030x slower <harmonic> 5.6840+-0.0052 ! 5.7057+-0.0079 ! definitely 1.0038x slower
Filip Pizlo
Comment 26
2015-01-28 20:39:59 PST
Created
attachment 245607
[details]
the patch Fix style.
WebKit Commit Bot
Comment 27
2015-01-28 20:42:57 PST
Attachment 245607
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1705: Missing space before { [whitespace/braces] [5] ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:168: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:62: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:63: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 5 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Geoffrey Garen
Comment 28
2015-01-29 11:16:29 PST
Comment on
attachment 245607
[details]
the patch r=me Do we know why we got a 2X speedup on those regress tests?
Filip Pizlo
Comment 29
2015-01-29 11:17:53 PST
(In reply to
comment #28
)
> Comment on
attachment 245607
[details]
> the patch > > r=me > > Do we know why we got a 2X speedup on those regress tests?
Perfect storm: remove the overhead of call edge profiling and polymorphic calls in the first three tiers become faster thanks to inline caching. Those are the only short-running (i.e. no FTL or less FTL) tests that hammer poly call.
Filip Pizlo
Comment 30
2015-01-29 12:31:40 PST
I'm not getting EWS bubbles. I'll rageland and watch the bots.
Filip Pizlo
Comment 31
2015-01-29 12:35:07 PST
Landed in
http://trac.webkit.org/changeset/179357
Alexey Proskuryakov
Comment 32
2015-01-29 17:12:13 PST
Several WebGL tests started to flakily fail around the time of this change. Can it be the culprit?
http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=webgl%2F1.0.2%2Fconformance%2Fglsl%2Ffunctions%2Fglsl-function-cos.html
WebKit Commit Bot
Comment 33
2015-01-29 17:26:23 PST
Re-opened since this is blocked by
bug 141062
Andreas Kling
Comment 34
2015-01-29 17:30:25 PST
I'm rolling this out to see if it fixes the WebGL problem. Will roll back in if problem remains.
Alexey Proskuryakov
Comment 35
2015-01-30 09:50:29 PST
The issue no longer occurs, so it must have been this patch indeed.
Filip Pizlo
Comment 36
2015-01-30 15:23:42 PST
(In reply to
comment #35
)
> The issue no longer occurs, so it must have been this patch indeed.
To clarify, is it just these two tests: glsl-function-cos and glsl-function-sin?
Alexey Proskuryakov
Comment 37
2015-01-30 16:01:02 PST
Also this one: webgl/1.0.2/conformance/glsl/functions/glsl-function-smoothstep-float.html
Filip Pizlo
Comment 38
2015-01-30 19:05:18 PST
I've confirmed that with the fix for
https://bugs.webkit.org/show_bug.cgi?id=141107
, this can be rolled back in without breaking the WebGL tests.
Alexey Proskuryakov
Comment 39
2015-01-30 19:29:56 PST
It's exciting that flakiness only seen in debug builds on a few seemingly unrelated tests has helped identify a real issue!
Filip Pizlo
Comment 40
2015-02-02 10:43:08 PST
Relanded in
http://trac.webkit.org/changeset/179478
David Kilzer (:ddkilzer)
Comment 41
2015-02-06 09:45:28 PST
<
rdar://problem/18777722
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug