[webkit-reviews] review requested: [Bug 69690] DFG does not have flow-sensitive intraprocedural control flow analysis : [Attachment 110259] work in progress - better performance

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Oct 7 23:00:20 PDT 2011


Filip Pizlo <fpizlo at apple.com> has asked  for review:
Bug 69690: DFG does not have flow-sensitive intraprocedural control flow
analysis
https://bugs.webkit.org/show_bug.cgi?id=69690

Attachment 110259: work in progress - better performance
https://bugs.webkit.org/attachment.cgi?id=110259&action=review

------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
I did two things:

- Fixed OSR entry. If a variable is dead then the abstract value should be TOP.
Internally, the abstract state machine treats dead variables as BOTTOM. That's
necessary for making the analysis precise.

- Changed the abstract structure value representation. Previously it was
basically Vector<Structure*>. Now it's just Structure*, where sets larger than
1 are turned to TOP. This works great, since most structure sets only contain
one element anyway.


Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
"CFA" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark.
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		       CFA     
				 
SunSpider:
   3d-cube				  7.3400+-0.2059	 
7.2108+-0.1398	       might be 1.0179x faster
   3d-morph				  7.5851+-0.1400    ?	 
7.6501+-0.1387	     ?
   3d-raytrace				  7.5752+-0.1830	 
7.5150+-0.1734	     
   access-binary-trees			  1.7129+-0.0337    ?	 
1.7169+-0.0476	     ?
   access-fannkuch			  6.2979+-0.0958    ?	 
6.5286+-0.1364	     ? might be 1.0366x slower
   access-nbody 			  3.4297+-0.0839    ?	 
3.5317+-0.0830	     ? might be 1.0297x slower
   access-nsieve			  2.5318+-0.0516    ?	 
2.6022+-0.0786	     ? might be 1.0278x slower
   bitops-3bit-bits-in-byte		  1.6817+-0.0191    !	 
1.7452+-0.0250	     ! definitely 1.0378x slower
   bitops-bits-in-byte			  2.7081+-0.0537    !	 
2.9258+-0.1245	     ! definitely 1.0804x slower
   bitops-bitwise-and			  3.4372+-0.2532	 
3.3606+-0.0894	       might be 1.0228x faster
   bitops-nsieve-bits			  5.4391+-0.0644	 
5.3109+-0.1139	       might be 1.0241x faster
   controlflow-recursive		  2.0508+-0.0375	 
2.0316+-0.0499	     
   crypto-aes				  6.5082+-0.1513    ?	 
6.7630+-0.1750	     ? might be 1.0392x slower
   crypto-md5				  2.7830+-0.0851    ?	 
2.8322+-0.0706	     ? might be 1.0177x slower
   crypto-sha1				  2.4498+-0.0714    ?	 
2.5556+-0.0867	     ? might be 1.0432x slower
   date-format-tofte			  9.8098+-0.2208    ?	 
9.9895+-0.1587	     ? might be 1.0183x slower
   date-format-xparb			  9.4492+-0.1745    !	 
9.8804+-0.2001	     ! definitely 1.0456x slower
   math-cordic				  6.3737+-0.1416	 
6.3125+-0.0656	     
   math-partial-sums			  7.5554+-0.1169	 
7.5150+-0.1276	     
   math-spectral-norm			  2.7905+-0.0655    ?	 
2.8601+-0.0784	     ? might be 1.0250x slower
   regexp-dna				 10.6186+-0.1482	
10.5608+-0.1658       
   string-base64			  5.1063+-0.0828    ?	 
5.1827+-0.0692	     ? might be 1.0150x slower
   string-fasta 			  6.3348+-0.1140    ?	 
6.4154+-0.1134	     ? might be 1.0127x slower
   string-tagcloud			 11.1755+-0.2087    ?	
11.2236+-0.2715       ?
   string-unpack-code			 21.0133+-0.2257    !	
21.6342+-0.2337       ! definitely 1.0295x slower
   string-validate-input		  6.2811+-0.1612	 
6.2791+-0.1612	     

   <arithmetic> *			  6.1553+-0.0194    !	 
6.2359+-0.0193	     ! definitely 1.0131x slower
   <geometric>				  5.0469+-0.0176    !	 
5.1180+-0.0158	     ! definitely 1.0141x slower
   <harmonic>				  4.1371+-0.0257    !	 
4.2074+-0.0236	     ! definitely 1.0170x slower

					    TipOfTree		       CFA     
				 
V8:
   crypto				 71.6115+-0.3106    !	
72.6151+-0.5762       ! definitely 1.0140x slower
   deltablue				227.0336+-3.5653       
223.0970+-2.1287	 might be 1.0176x faster
   earley-boyer 			 90.4309+-0.3425    ?	
90.9446+-0.2832       ?
   raytrace				 57.5184+-0.4610	
57.4722+-0.2783       
   regexp				102.7896+-0.3338    ?  
102.8251+-0.5877       ?
   richards				205.1041+-1.1592    ^  
175.0092+-0.6119       ^ definitely 1.1720x faster
   splay				 95.5634+-0.6248    ?	
95.6634+-0.7130       ?

   <arithmetic> 			121.4359+-0.5050    ^  
116.8038+-0.3613       ^ definitely 1.0397x faster
   <geometric> *			107.9023+-0.2225    ^  
105.5267+-0.2425       ^ definitely 1.0225x faster
   <harmonic>				 97.3732+-0.1490    ^	
96.4890+-0.1988       ^ definitely 1.0092x faster

					    TipOfTree		       CFA     
				 
Kraken:
   ai-astar				493.1064+-3.9254       
492.3566+-3.0941       
   audio-beat-detection 		191.3132+-0.6433    ?  
191.4514+-0.7850       ?
   audio-dft				265.4996+-2.7456    ^  
260.4941+-1.8597       ^ definitely 1.0192x faster
   audio-fft				125.3307+-0.5836    ?  
126.1825+-1.9849       ?
   audio-oscillator			251.3514+-1.9030       
249.7558+-2.0144       
   imaging-darkroom			410.4260+-0.8666    !  
413.6212+-1.1919       ! definitely 1.0078x slower
   imaging-desaturate			230.1417+-0.5040    ^  
216.3676+-0.4729       ^ definitely 1.0637x faster
   imaging-gaussian-blur		578.7784+-2.2247    ^  
568.6758+-2.3888       ^ definitely 1.0178x faster
   json-parse-financial 		 54.4313+-0.2379    ?	
54.5051+-0.2106       ?
   json-stringify-tinderbox		 69.6600+-0.8972    ^	
68.1390+-0.2398       ^ definitely 1.0223x faster
   stanford-crypto-aes			131.3154+-2.2640       
130.2981+-1.6271       
   stanford-crypto-ccm			 99.8329+-0.9814    !  
101.7389+-0.8432       ! definitely 1.0191x slower
   stanford-crypto-pbkdf2		187.8078+-0.7526    !  
191.5040+-1.2973       ! definitely 1.0197x slower
   stanford-crypto-sha256-iterative	 69.6199+-0.2190    ?	
69.9535+-0.3764       ?

   <arithmetic> *			225.6153+-0.5117    ^  
223.9317+-0.4806       ^ definitely 1.0075x faster
   <geometric>				176.2934+-0.4303    ^  
175.3365+-0.4004       ^ definitely 1.0055x faster
   <harmonic>				137.8627+-0.3810       
137.4240+-0.3734       

					    TipOfTree		       CFA     
				 
All benchmarks:
   <arithmetic> 			 88.6958+-0.1882    ^	
87.5490+-0.1577       ^ definitely 1.0131x faster
   <geometric>				 22.9502+-0.0535    ?	
23.0146+-0.0492       ?
   <harmonic>				  7.2778+-0.0442    !	 
7.3970+-0.0406	     ! definitely 1.0164x slower

					    TipOfTree		       CFA     
				 
Geomean of preferred means:
   <scaled-result>			 53.1147+-0.0841    ^	
52.8190+-0.0781       ^ definitely 1.0056x faster


More information about the webkit-reviews mailing list