[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