[webkit-reviews] review canceled: [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
Sat Oct 8 00:33:34 PDT 2011


Filip Pizlo <fpizlo at apple.com> has canceled Filip Pizlo <fpizlo at apple.com>'s
request 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>
This is now pure win.  This required a number of changes:

- CFA merging requires interrogating the successors of basic blocks. This was
previously a binary search. Now it's not.

- The CFA is now pseudo-worklist based. It visits basic blocks in bytecode
order (which is almost program order, and almost topological order), leading to
a high probability that a block will not be visited unless its predecessors
have been visited. But it does not visit a block if since the last time it was
visited nothing has happened that would change the block's outcome.

- Bunch of little tweaks to reduce the costs of various CFA operations.


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.1877+-0.1640    ?	 
7.2292+-0.1642	     ?
   3d-morph				  7.5879+-0.1785	 
7.5121+-0.1356	       might be 1.0101x faster
   3d-raytrace				  7.4148+-0.2026	 
7.3754+-0.1707	     
   access-binary-trees			  1.7784+-0.0808	 
1.6926+-0.0562	       might be 1.0507x faster
   access-fannkuch			  6.3277+-0.1237	 
6.3013+-0.1268	     
   access-nbody 			  3.5172+-0.0884	 
3.4572+-0.0941	       might be 1.0174x faster
   access-nsieve			  2.5999+-0.0791	 
2.5825+-0.0877	     
   bitops-3bit-bits-in-byte		  1.7346+-0.0357	 
1.7115+-0.0327	       might be 1.0135x faster
   bitops-bits-in-byte			  2.7539+-0.0720	 
2.7514+-0.0510	     
   bitops-bitwise-and			  3.3173+-0.0725    ?	 
3.3754+-0.1000	     ? might be 1.0175x slower
   bitops-nsieve-bits			  5.3589+-0.1009    ?	 
5.3927+-0.1290	     ?
   controlflow-recursive		  2.0357+-0.0392    ?	 
2.0723+-0.0671	     ? might be 1.0180x slower
   crypto-aes				  6.5654+-0.1839    ?	 
6.6289+-0.1744	     ?
   crypto-md5				  2.7721+-0.0633    ?	 
2.8039+-0.0589	     ? might be 1.0114x slower
   crypto-sha1				  2.4790+-0.1072    ?	 
2.4911+-0.0745	     ?
   date-format-tofte			  9.8535+-0.2432    ?	 
9.9580+-0.2362	     ? might be 1.0106x slower
   date-format-xparb			  9.4830+-0.1867    !	
10.0138+-0.2298       ! definitely 1.0560x slower
   math-cordic				  6.3866+-0.1093    ?	 
6.5029+-0.1173	     ? might be 1.0182x slower
   math-partial-sums			  7.6234+-0.1297	 
7.5099+-0.1406	       might be 1.0151x faster
   math-spectral-norm			  2.8589+-0.0701	 
2.8198+-0.0660	       might be 1.0139x faster
   regexp-dna				 10.5651+-0.2565	
10.4409+-0.1349 	might be 1.0119x faster
   string-base64			  5.0891+-0.1039    ?	 
5.2070+-0.1078	     ? might be 1.0232x slower
   string-fasta 			  6.4453+-0.1413	 
6.3143+-0.0977	       might be 1.0207x faster
   string-tagcloud			 11.0358+-0.2692    ?	
11.1644+-0.1814       ? might be 1.0117x slower
   string-unpack-code			 21.0071+-0.2760    ?	
21.4615+-0.5199       ? might be 1.0216x slower
   string-validate-input		  6.2340+-0.1813    ?	 
6.3609+-0.1603	     ? might be 1.0204x slower

   <arithmetic> *			  6.1543+-0.0155    ?	 
6.1973+-0.0322	     ?
   <geometric>				  5.0642+-0.0192    ?	 
5.0771+-0.0246	     ?
   <harmonic>				  4.1736+-0.0342	 
4.1643+-0.0360	     

					    TipOfTree		       CFA     
				 
V8:
   crypto				 71.6260+-0.3327    ?	
71.8717+-0.3132       ?
   deltablue				226.0467+-1.9042    ^  
221.1798+-1.0192       ^ definitely 1.0220x faster
   earley-boyer 			 89.8473+-0.2783    !	
90.9236+-0.3194       ! definitely 1.0120x slower
   raytrace				 57.7508+-0.2079    ?	
58.0618+-0.2847       ?
   regexp				102.4067+-0.2936    ?  
103.1329+-0.4744       ?
   richards				204.6559+-1.0139    ^  
175.9648+-1.3114       ^ definitely 1.1631x faster
   splay				 96.0001+-0.5870	
95.7168+-0.2982       

   <arithmetic> 			121.1905+-0.2260    ^  
116.6931+-0.2717       ^ definitely 1.0385x faster
   <geometric> *			107.7836+-0.1350    ^  
105.5294+-0.1963       ^ definitely 1.0214x faster
   <harmonic>				 97.3547+-0.1511    ^	
96.5707+-0.1726       ^ definitely 1.0081x faster

					    TipOfTree		       CFA     
				 
Kraken:
   ai-astar				491.8601+-2.3376       
489.5730+-2.2160       
   audio-beat-detection 		190.6516+-0.7819    !  
193.5275+-1.1763       ! definitely 1.0151x slower
   audio-dft				268.0732+-3.6325    ^  
259.3428+-1.9135       ^ definitely 1.0337x faster
   audio-fft				124.9162+-0.4877       
124.7628+-0.2686       
   audio-oscillator			252.5326+-2.3092       
249.5812+-1.6099	 might be 1.0118x faster
   imaging-darkroom			411.7627+-1.5812    ?  
412.7726+-0.8839       ?
   imaging-desaturate			229.9889+-0.7966    ^  
216.8373+-0.8930       ^ definitely 1.0607x faster
   imaging-gaussian-blur		580.7792+-2.4572    ^  
565.6115+-1.0252       ^ definitely 1.0268x faster
   json-parse-financial 		 55.2379+-0.3316	
55.1255+-0.5643       
   json-stringify-tinderbox		 68.1584+-0.4261	
67.6238+-0.1915       
   stanford-crypto-aes			130.3048+-1.2905    ?  
130.4318+-1.5252       ?
   stanford-crypto-ccm			 99.8189+-0.8939    !  
102.0182+-0.9102       ! definitely 1.0220x slower
   stanford-crypto-pbkdf2		187.7075+-0.8696    !  
190.3954+-1.0340       ! definitely 1.0143x slower
   stanford-crypto-sha256-iterative	 70.1452+-0.4680    ?	
70.3815+-0.4656       ?

   <arithmetic> *			225.8527+-0.5194    ^  
223.4275+-0.4581       ^ definitely 1.0109x faster
   <geometric>				176.3357+-0.4920    ^  
175.2288+-0.4434       ^ definitely 1.0063x faster
   <harmonic>				137.8869+-0.4240       
137.5821+-0.4486       

					    TipOfTree		       CFA     
				 
All benchmarks:
   <arithmetic> 			 88.7294+-0.1670    ^	
87.3610+-0.1625       ^ definitely 1.0157x faster
   <geometric>				 22.9916+-0.0565	
22.9087+-0.0767       
   <harmonic>				  7.3403+-0.0588	 
7.3234+-0.0619	     

					    TipOfTree		       CFA     
				 
Geomean of preferred means:
   <scaled-result>			 53.1110+-0.0676    ^	
52.6706+-0.1069       ^ definitely 1.0084x faster


More information about the webkit-reviews mailing list