[webkit-reviews] review requested: [Bug 111764] The DFG fixpoint is not strictly profitable, and should be straight-lined : [Attachment 192067] the patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Mar 7 12:18:48 PST 2013
Filip Pizlo <fpizlo at apple.com> has asked for review:
Bug 111764: The DFG fixpoint is not strictly profitable, and should be
straight-lined
https://bugs.webkit.org/show_bug.cgi?id=111764
Attachment 192067: the patch
https://bugs.webkit.org/attachment.cgi?id=192067&action=review
------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
Performance using JSC command-line below. I'll post DRT performance and
in-browser performance shortly.
Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on
bigmac (MacPro5,1).
VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc
(r145110)
"NoFixpoint" at
/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r145110)
Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark.
Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get
microsecond-level timing. Reporting benchmark execution times with 95%
confidence intervals in milliseconds.
TipOfTree
NoFixpoint
SunSpider:
3d-cube 8.8327+-0.1182 ^
7.7590+-0.1012 ^ definitely 1.1384x faster
3d-morph 7.4806+-0.0802 ?
7.5581+-0.1122 ? might be 1.0104x slower
3d-raytrace 9.6519+-0.1744 ^
8.9786+-0.1300 ^ definitely 1.0750x faster
access-binary-trees 1.6085+-0.0101 ^
1.5593+-0.0090 ^ definitely 1.0316x faster
access-fannkuch 6.8149+-0.1184 ^
6.4946+-0.0952 ^ definitely 1.0493x faster
access-nbody 4.0518+-0.0148 ^
3.9010+-0.0141 ^ definitely 1.0387x faster
access-nsieve 4.2910+-0.0631
4.1901+-0.0480 might be 1.0241x faster
bitops-3bit-bits-in-byte 1.5021+-0.0094 ?
1.5030+-0.0113 ?
bitops-bits-in-byte 5.7291+-0.0709 ?
5.7372+-0.0730 ?
bitops-bitwise-and 2.0294+-0.0767 ?
2.0808+-0.0766 ? might be 1.0253x slower
bitops-nsieve-bits 3.5710+-0.0206 ^
3.4308+-0.0165 ^ definitely 1.0409x faster
controlflow-recursive 2.5735+-0.0948
2.5550+-0.0948
crypto-aes 7.1272+-0.0961 ^
6.5409+-0.1126 ^ definitely 1.0896x faster
crypto-md5 3.5391+-0.0222 ^
3.3058+-0.0293 ^ definitely 1.0705x faster
crypto-sha1 2.9470+-0.0178 ^
2.7601+-0.0121 ^ definitely 1.0677x faster
date-format-tofte 12.8985+-0.3064 ^
12.2549+-0.2109 ^ definitely 1.0525x faster
date-format-xparb 13.3621+-0.3963
13.0512+-0.3012 might be 1.0238x faster
math-cordic 3.8934+-0.0573
3.8644+-0.0560
math-partial-sums 10.4972+-0.1311
10.3093+-0.0878 might be 1.0182x faster
math-spectral-norm 2.7129+-0.0102 ^
2.6145+-0.0081 ^ definitely 1.0376x faster
regexp-dna 9.3777+-0.1133 ?
9.4092+-0.1126 ?
string-base64 4.5557+-0.0499 ^
4.4176+-0.0541 ^ definitely 1.0313x faster
string-fasta 9.0969+-0.1238 ^
8.8403+-0.1049 ^ definitely 1.0290x faster
string-tagcloud 11.9099+-0.2176 ?
11.9780+-0.2298 ?
string-unpack-code 22.7466+-0.1809
22.5389+-0.2269
string-validate-input 6.5993+-0.1027 ?
6.6610+-0.1686 ?
<arithmetic> * 6.9000+-0.0437 ^
6.7036+-0.0425 ^ definitely 1.0293x faster
<geometric> 5.5155+-0.0214 ^
5.3567+-0.0218 ^ definitely 1.0296x faster
<harmonic> 4.3662+-0.0237 ^
4.2570+-0.0220 ^ definitely 1.0256x faster
TipOfTree
NoFixpoint
V8Spider:
crypto 70.4819+-0.5821
70.3529+-0.7545
deltablue 113.8182+-1.2948 ^
105.7167+-0.6954 ^ definitely 1.0766x faster
earley-boyer 73.9014+-0.6032 ^
69.3147+-0.2780 ^ definitely 1.0662x faster
raytrace 57.7015+-0.1647 ^
52.1691+-0.1468 ^ definitely 1.1060x faster
regexp 84.0362+-0.2268 !
84.7710+-0.2979 ! definitely 1.0087x slower
richards 99.7591+-0.5202 ^
97.9256+-0.5516 ^ definitely 1.0187x faster
splay 47.5342+-0.3267
47.3379+-0.4087
<arithmetic> 78.1761+-0.1759 ^
75.3697+-0.1831 ^ definitely 1.0372x faster
<geometric> * 75.2215+-0.1348 ^
72.5365+-0.1953 ^ definitely 1.0370x faster
<harmonic> 72.3091+-0.1392 ^
69.7145+-0.2176 ^ definitely 1.0372x faster
TipOfTree
NoFixpoint
Octane and V8v7:
encrypt 0.36590+-0.00037 !
0.36915+-0.00033 ! definitely 1.0089x slower
decrypt 6.68693+-0.00786 !
6.81595+-0.03705 ! definitely 1.0193x slower
deltablue x2 0.47530+-0.00152 ?
0.47659+-0.00153 ?
earley 0.71517+-0.00512 !
0.72471+-0.00238 ! definitely 1.0133x slower
boyer 10.62808+-0.03402 !
10.77278+-0.08791 ! definitely 1.0136x slower
raytrace x2 3.75125+-0.01650
3.72890+-0.01428
regexp x2 25.56794+-0.05782 ?
25.57102+-0.05368 ?
richards x2 0.25611+-0.00044 !
0.25794+-0.00069 ! definitely 1.0071x slower
splay x2 0.63203+-0.03122
0.62887+-0.03088
navier-stokes x2 9.62681+-0.02557
9.62501+-0.03703
closure 0.37826+-0.06464 ?
0.37935+-0.06561 ?
jquery 5.32640+-0.92731 ?
5.40527+-0.88845 ? might be 1.0148x slower
gbemu x2 212.90828+-12.03713 ?
214.17616+-12.83930 ?
box2d x2 26.36230+-0.23339 ?
26.36620+-0.14271 ?
V8v7:
<arithmetic> 6.18844+-0.01122 ?
6.20370+-0.01106 ? might be 1.0025x slower
<geometric> * 2.04479+-0.01322 ?
2.05145+-0.01206 ? might be 1.0033x slower
<harmonic> 0.78472+-0.00612 ?
0.78834+-0.00580 ? might be 1.0046x slower
Octane including V8v7:
<arithmetic> 26.51185+-1.13041 ?
26.64221+-1.19691 ? might be 1.0049x slower
<geometric> * 3.79605+-0.06778 ?
3.81085+-0.07232 ? might be 1.0039x slower
<harmonic> 0.93772+-0.01740 ?
0.94205+-0.01981 ? might be 1.0046x slower
TipOfTree
NoFixpoint
Kraken:
ai-astar 439.544+-0.478
439.412+-0.507
audio-beat-detection 206.759+-1.615
206.181+-2.366
audio-dft 254.183+-1.550 ?
256.735+-3.085 ? might be 1.0100x slower
audio-fft 118.054+-0.120
118.046+-0.149
audio-oscillator 195.828+-0.780
195.469+-0.797
imaging-darkroom 260.720+-0.885 ?
261.555+-1.079 ?
imaging-desaturate 130.853+-0.736 ?
131.164+-0.757 ?
imaging-gaussian-blur 328.998+-0.597 ?
329.391+-0.866 ?
json-parse-financial 66.491+-0.165 !
67.933+-0.303 ! definitely 1.0217x slower
json-stringify-tinderbox 87.337+-0.261 ^
83.978+-0.317 ^ definitely 1.0400x faster
stanford-crypto-aes 81.937+-0.237
81.760+-0.393
stanford-crypto-ccm 88.904+-3.933
88.106+-3.536
stanford-crypto-pbkdf2 224.663+-1.049
223.720+-1.036
stanford-crypto-sha256-iterative 96.653+-0.387 !
98.389+-0.911 ! definitely 1.0180x slower
<arithmetic> * 184.352+-0.397 ?
184.417+-0.448 ? might be 1.0004x slower
<geometric> 156.929+-0.591
156.889+-0.556 might be 1.0003x faster
<harmonic> 134.709+-0.735
134.643+-0.674 might be 1.0005x faster
TipOfTree
NoFixpoint
JSRegress:
adapt-to-double-divide 18.5731+-0.0863 ?
18.6959+-0.1406 ?
aliased-arguments-getbyval 0.8839+-0.0088 ^
0.7483+-0.0085 ^ definitely 1.1812x faster
allocate-big-object 1.7928+-0.0319 ?
1.8472+-0.0462 ? might be 1.0303x slower
arity-mismatch-inlining 0.6481+-0.0111 ^
0.6259+-0.0104 ^ definitely 1.0355x faster
array-access-polymorphic-structure 5.8977+-0.1270
5.6662+-0.1312 might be 1.0409x faster
array-with-double-add 4.8546+-0.0366
4.8034+-0.0456 might be 1.0107x faster
array-with-double-increment 3.3160+-0.0551
3.3125+-0.0540
array-with-double-mul-add 6.1489+-0.2053
6.0602+-0.2151 might be 1.0146x faster
array-with-double-sum 6.5632+-0.0818 ?
6.5699+-0.0757 ?
array-with-int32-add-sub 8.7395+-0.0880
8.6224+-0.0725 might be 1.0136x faster
array-with-int32-or-double-sum 6.6308+-0.0820 ?
6.6353+-0.0639 ?
big-int-mul 4.1405+-0.0501
4.0534+-0.0569 might be 1.0215x faster
boolean-test 3.6275+-0.0094 ^
3.5631+-0.0313 ^ definitely 1.0181x faster
cast-int-to-double 11.8953+-0.1523 ^
11.5809+-0.0933 ^ definitely 1.0271x faster
cell-argument 11.9804+-0.0729 ?
12.1852+-0.1443 ? might be 1.0171x slower
cfg-simplify 3.1676+-0.0132 ?
3.2024+-0.0637 ? might be 1.0110x slower
cmpeq-obj-to-obj-other 9.3278+-0.0960 !
9.6359+-0.1242 ! definitely 1.0330x slower
constant-test 7.1641+-0.0987
7.0938+-0.1150
direct-arguments-getbyval 0.8042+-0.0104 ^
0.6907+-0.0109 ^ definitely 1.1644x faster
double-pollution-getbyval 8.8919+-0.1046 ?
8.9390+-0.0914 ?
double-pollution-putbyoffset 4.1612+-0.0237
4.1211+-0.0280
external-arguments-getbyval 1.9370+-0.0253 ^
1.8216+-0.0332 ^ definitely 1.0634x faster
external-arguments-putbyval 2.7417+-0.0145
2.7229+-0.0122
Float32Array-matrix-mult 11.3811+-0.2497 ?
11.5451+-0.2782 ? might be 1.0144x slower
fold-double-to-int 18.6925+-0.4485
18.4006+-0.2292 might be 1.0159x faster
function-dot-apply 2.5980+-0.0071 ?
2.6008+-0.0077 ?
function-test 4.0924+-0.0369 !
4.2252+-0.0743 ! definitely 1.0325x slower
get-by-id-chain-from-try-block 6.0887+-0.0782 ?
6.1736+-0.0781 ? might be 1.0140x slower
HashMap-put-get-iterate-keys 74.2011+-0.6867 ^
72.8602+-0.6343 ^ definitely 1.0184x faster
HashMap-put-get-iterate 75.1286+-0.5368
74.9888+-0.2794
HashMap-string-put-get-iterate 60.7783+-0.5776
60.0549+-0.3607 might be 1.0120x faster
indexed-properties-in-objects 3.7870+-0.0125 ^
3.6857+-0.0403 ^ definitely 1.0275x faster
inline-arguments-access 1.1350+-0.0076 ^
1.0224+-0.0079 ^ definitely 1.1101x faster
inline-arguments-local-escape 20.0991+-0.2939 ^
19.2522+-0.1558 ^ definitely 1.0440x faster
inline-get-scoped-var 5.5165+-0.1977 ?
5.8158+-0.2597 ? might be 1.0543x slower
inlined-put-by-id-transition 12.7260+-0.1254 !
13.7767+-0.2341 ! definitely 1.0826x slower
int-or-other-abs-then-get-by-val 7.3165+-0.0690 ?
7.3283+-0.0830 ?
int-or-other-abs-zero-then-get-by-val 30.8500+-0.2127
30.8268+-0.3005
int-or-other-add-then-get-by-val 8.4947+-0.1094
8.4550+-0.0725
int-or-other-add 8.8449+-0.1193
8.8414+-0.0945
int-or-other-div-then-get-by-val 6.6342+-0.0760
6.5938+-0.0782
int-or-other-max-then-get-by-val 8.4673+-0.1731
8.2561+-0.2413 might be 1.0256x faster
int-or-other-min-then-get-by-val 6.8287+-0.1037
6.7547+-0.0767 might be 1.0109x faster
int-or-other-mod-then-get-by-val 6.6691+-0.0783
6.5903+-0.0759 might be 1.0120x faster
int-or-other-mul-then-get-by-val 5.9498+-0.0779 ?
5.9608+-0.0630 ?
int-or-other-neg-then-get-by-val 6.6548+-0.0851 ?
6.6985+-0.0756 ?
int-or-other-neg-zero-then-get-by-val 30.5983+-0.4148
30.2695+-0.2421 might be 1.0109x faster
int-or-other-sub-then-get-by-val 8.5620+-0.0696
8.5483+-0.0946
int-or-other-sub 6.9059+-0.0545
6.7894+-0.0814 might be 1.0172x faster
int-overflow-local 13.3293+-0.1064
13.2497+-0.0780
Int16Array-bubble-sort 40.8569+-0.1286
40.7727+-0.1242
Int16Array-load-int-mul 1.5543+-0.0091 ^
1.5340+-0.0081 ^ definitely 1.0132x faster
Int8Array-load 4.0031+-0.0088
3.9715+-0.0339
integer-divide 12.7197+-0.1236
12.6938+-0.1371
integer-modulo 1.7067+-0.0091
1.7031+-0.0053
make-indexed-storage 3.2606+-0.0203 ?
3.2645+-0.0982 ?
method-on-number 20.6334+-0.1970
20.2611+-0.5226 might be 1.0184x faster
nested-function-parsing 102.6255+-50.2590
100.9185+-50.8878 might be 1.0169x faster
new-array-buffer-dead 2.9812+-0.0089
2.9657+-0.0093
new-array-buffer-push 8.7672+-0.0775 ?
8.8250+-0.1757 ?
new-array-dead 23.3715+-0.1042 ?
23.4011+-0.1013 ?
new-array-push 5.2331+-0.1423
5.0701+-0.0679 might be 1.0321x faster
number-test 3.5092+-0.0360 ?
3.5218+-0.0306 ?
object-closure-call 7.0338+-0.0641
6.9199+-0.1007 might be 1.0165x faster
object-test 4.0918+-0.0213
4.0643+-0.0139
poly-stricteq 74.9355+-0.1492 ?
75.6841+-0.9578 ?
polymorphic-structure 16.7200+-0.1268
16.5714+-0.0733
polyvariant-monomorphic-get-by-id 10.3610+-0.0819
10.3280+-0.0979
rare-osr-exit-on-local 17.1197+-0.0905 ?
17.1198+-0.1369 ?
register-pressure-from-osr 26.1270+-0.0850 ?
26.2416+-0.2249 ?
simple-activation-demo 28.7006+-0.1613
28.6174+-0.2495
slow-array-profile-convergence 3.7512+-0.0361 ^
3.5890+-0.0085 ^ definitely 1.0452x faster
slow-convergence 3.3141+-0.0099 ^
3.1770+-0.0132 ^ definitely 1.0431x faster
sparse-conditional 1.1064+-0.0076 ^
1.0780+-0.0128 ^ definitely 1.0263x faster
splice-to-remove 41.1210+-0.1691 !
42.6192+-0.1647 ! definitely 1.0364x slower
string-hash 2.2316+-0.0121 ^
2.1840+-0.0112 ^ definitely 1.0218x faster
string-repeat-arith 39.5165+-0.8297
38.4655+-0.9937 might be 1.0273x faster
string-sub 72.5497+-0.4402 ?
73.1768+-1.8532 ?
string-test 3.5706+-0.0086 ^
3.5101+-0.0405 ^ definitely 1.0172x faster
structure-hoist-over-transitions 2.7025+-0.0178 ^
2.6653+-0.0189 ^ definitely 1.0140x faster
tear-off-arguments-simple 1.7401+-0.0101 ^
1.4825+-0.0101 ^ definitely 1.1737x faster
tear-off-arguments 3.0607+-0.0295 ^
2.7885+-0.0083 ^ definitely 1.0976x faster
temporal-structure 17.4272+-0.1356 !
18.4564+-0.5660 ! definitely 1.0591x slower
to-int32-boolean 22.4223+-0.0998 ?
22.5212+-0.1055 ?
undefined-test 3.7088+-0.0234
3.6754+-0.0444
<arithmetic> 14.3618+-0.6078
14.3129+-0.6309 might be 1.0034x faster
<geometric> * 7.4586+-0.0489
7.3649+-0.0539 might be 1.0127x faster
<harmonic> 4.2769+-0.0174 ^
4.1074+-0.0153 ^ definitely 1.0413x faster
TipOfTree
NoFixpoint
All benchmarks:
<arithmetic> 33.1920+-0.4991
33.0289+-0.5229 might be 1.0049x faster
<geometric> 9.4300+-0.0651
9.3079+-0.0693 might be 1.0131x faster
<harmonic> 3.1111+-0.0291
3.0573+-0.0310 might be 1.0176x faster
TipOfTree
NoFixpoint
Geomean of preferred means:
<scaled-result> 19.3440+-0.1249 ^
19.0612+-0.1318 ^ definitely 1.0148x faster
More information about the webkit-reviews
mailing list